<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="/default.xsl"?>
<fr:tree xmlns:fr="http://www.forester-notes.org" xmlns:html="http://www.w3.org/1999/xhtml" xmlns:xml="http://www.w3.org/XML/1998/namespace" root="false" base-url="/">
  <fr:frontmatter>
    <fr:authors>
      <fr:author>
        <fr:link href="/eigil-rischel/" title="Eigil Fjeldgren Rischel" uri="https://erischel.com/eigil-rischel/" display-uri="eigil-rischel" type="local">Eigil Fjeldgren Rischel</fr:link>
      </fr:author>
    </fr:authors>
    <fr:date>
      <fr:year>2020</fr:year>
      <fr:month>10</fr:month>
      <fr:day>25</fr:day>
    </fr:date>
    <fr:uri>https://erischel.com/chu-spaces-and-linear-logic/</fr:uri>
    <fr:display-uri>chu-spaces-and-linear-logic</fr:display-uri>
    <fr:route>/chu-spaces-and-linear-logic/</fr:route>
    <fr:title text="Chu spaces and linear logic">Chu spaces and linear logic</fr:title>
  </fr:frontmatter>
  <fr:mainmatter>
    <html:p>
A _Chu space over <fr:tex display="inline"><![CDATA[S]]></fr:tex>_ consists of a pair of sets <fr:tex display="inline"><![CDATA[(X,U)]]></fr:tex>, and a function <fr:tex display="inline"><![CDATA[e: X \times  U \to  S]]></fr:tex>.
A map of chu spaces <fr:tex display="inline"><![CDATA[(X,U,e) \to  (Y,V,e')]]></fr:tex> is a pair of maps <fr:tex display="inline"><![CDATA[X \to  Y, V \to  U]]></fr:tex> so that the diagram
</html:p>
    <html:img src="/bafkrmic65hzyhh2qxzijlsrtrnmzphlovtbpy4s7ltz4stqgz7yf7rh3wm.png" title="" />
    <html:p>
commutes.
This defines a category of Chu spaces, called <fr:tex display="inline"><![CDATA[Chu(Set,S)]]></fr:tex>
You can think of a Chu space as a normal-form game.
<fr:tex display="inline"><![CDATA[X]]></fr:tex> is the set of choices available to one player, and <fr:tex display="inline"><![CDATA[U]]></fr:tex> is the set of choices available to the other.
The outcome, given the choices <fr:tex display="inline"><![CDATA[x]]></fr:tex> and <fr:tex display="inline"><![CDATA[u]]></fr:tex>, is <fr:tex display="inline"><![CDATA[e(x,u)]]></fr:tex>.
</html:p>
    <html:p>
You can think of a map of Chu spaces as a way of transforming strategies between the two games.
If you would play <fr:tex display="inline"><![CDATA[x \in  X]]></fr:tex> in the original game, you instead play <fr:tex display="inline"><![CDATA[f(x) \in  Y]]></fr:tex>.
The map in the opposite direction ensures that, no matter what your opponent chooses in the target game, the same outcome could have happened in the domain game - hence your strategy is no worse, in some vague sense (but note that there is no ordering on <fr:tex display="inline"><![CDATA[S]]></fr:tex>, so this does not literally make sense).
</html:p>
    <html:p>
The cool thing is that Chu spaces are also a model of linear logic, in a way that sort of reflects "Game semantics for linear logic", but with some important differences (which we will see).
</html:p>
    <fr:tree show-metadata="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/eigil-rischel/" title="Eigil Fjeldgren Rischel" uri="https://erischel.com/eigil-rischel/" display-uri="eigil-rischel" type="local">Eigil Fjeldgren Rischel</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2020</fr:year>
          <fr:month>10</fr:month>
          <fr:day>25</fr:day>
        </fr:date>
        <fr:title text="The duality">The duality</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>
  The dual of a chu space is simply given by swapping the two sets, i.e <fr:tex display="inline"><![CDATA[(X,U,e)^\bot  := (U,X,(u,x) \mapsto  e(x,u))]]></fr:tex>.
  This defines a self-duality on the category of Chu spaces, <fr:tex display="inline"><![CDATA[Chu(Set,S) \cong  Chu(Set,S)^{op}]]></fr:tex></html:p>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/eigil-rischel/" title="Eigil Fjeldgren Rischel" uri="https://erischel.com/eigil-rischel/" display-uri="eigil-rischel" type="local">Eigil Fjeldgren Rischel</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2020</fr:year>
          <fr:month>10</fr:month>
          <fr:day>25</fr:day>
        </fr:date>
        <fr:title text="The additive connectives">The additive connectives</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>
  The additive connectives <fr:tex display="inline"><![CDATA[\&]]></fr:tex> and <fr:tex display="inline"><![CDATA[\oplus ]]></fr:tex> are simply given by the product and coproduct in the category of Chu spaces.
  Let's describe this explicitly:
</html:p>
        <html:p>
  -   Given Chu spaces <fr:tex display="inline"><![CDATA[A= (X,U,e), B=(Y,V,e')]]></fr:tex>, their product <fr:tex display="inline"><![CDATA[A \& B]]></fr:tex> is given by
      <fr:tex display="inline"><![CDATA[(X \times  Y, U + V, e \& e')]]></fr:tex>, where <fr:tex display="inline"><![CDATA[e\& e'(x,y,u \in  U) = e(x,u)]]></fr:tex>, and <fr:tex display="inline"><![CDATA[e\ampe '(x,y,v\in  V) = e'(y,v)]]></fr:tex>.
</html:p>
        <html:p>
      This corresponds to a game where the other player chooses one of the games to play, and a choice in that game. You have to choose a strategy for both games, not knowing which will be played.
  -   The terminal object is <fr:tex display="inline"><![CDATA[(*,\emptyset ,0)]]></fr:tex>, where <fr:tex display="inline"><![CDATA[0]]></fr:tex> denotes the empty function.
      Interpreting this as a game is slightly weird - it is a game that cannot be played, as the opponent has no moves to make.
      (Hence if given a choice between this and another game, the opponent must move in the other game, so that this is a unit for the product, as it should be).
  -   Given <fr:tex display="inline"><![CDATA[A]]></fr:tex> and <fr:tex display="inline"><![CDATA[B]]></fr:tex> as above, their coproduct <fr:tex display="inline"><![CDATA[A \oplus  B]]></fr:tex> is given by <fr:tex display="inline"><![CDATA[(X + Y, U \times  B, e \oplus  e')]]></fr:tex>, which is exactly dual to the product.
      In other words, here the player chooses a game and a move in it, while the opponent must choose a move in both games.
  -   The initial object is <fr:tex display="inline"><![CDATA[(\emptyset ,*,0)]]></fr:tex> - the player cannot move in this game.
</html:p>
        <html:p>
  The additive connectives, in other words, are much as you would expect from the "game" interpretation.
  The multiplicative connectives are more weird.
</html:p>
      </fr:mainmatter>
    </fr:tree>
    <fr:tree show-metadata="false">
      <fr:frontmatter>
        <fr:authors>
          <fr:author>
            <fr:link href="/eigil-rischel/" title="Eigil Fjeldgren Rischel" uri="https://erischel.com/eigil-rischel/" display-uri="eigil-rischel" type="local">Eigil Fjeldgren Rischel</fr:link>
          </fr:author>
        </fr:authors>
        <fr:date>
          <fr:year>2020</fr:year>
          <fr:month>10</fr:month>
          <fr:day>25</fr:day>
        </fr:date>
        <fr:title text="The multiplicative connectives.">The multiplicative connectives.</fr:title>
      </fr:frontmatter>
      <fr:mainmatter>
        <html:p>
  The tensor <fr:tex display="inline"><![CDATA[A \otimes  B]]></fr:tex> of two Chu spaces as above is defined by
  <fr:tex display="inline"><![CDATA[(X \times  Y, [X,V] \times _{[X\times  Y,S]} [Y,U], e\otimes  e')]]></fr:tex>,
  where <fr:tex display="inline"><![CDATA[e \otimes  e'((x,y),(f,g)) = e'(y,f(x)) = e(x,g(y))]]></fr:tex>.
  (Here the last equality is exactly the condition that <fr:tex display="inline"><![CDATA[(f,g)]]></fr:tex> lies in the pullback).
  In other words, to play <fr:tex display="inline"><![CDATA[A \otimes  B]]></fr:tex>, the player simply chooses a strategy in each game.
  The opponent must choose a strategy in <fr:tex display="inline"><![CDATA[A]]></fr:tex> which depends on the player's strategy in <fr:tex display="inline"><![CDATA[B]]></fr:tex> - a map <fr:tex display="inline"><![CDATA[Y \to  U]]></fr:tex>,
  and vice versa. These conditional strategies must satisfy the condition that, whether we play <fr:tex display="inline"><![CDATA[A]]></fr:tex> using the strategy matching the player's strategy from <fr:tex display="inline"><![CDATA[B]]></fr:tex>, or vice versa, we get the same result.
</html:p>
        <html:p>
  If you squint a bit, this is somewhat like the tensor product of games from before - the opponent can adjust their strategy based on the player's moves in the other game.
  But it's also very different.
  For example if the two images <fr:tex display="inline"><![CDATA[e(X \times  U)]]></fr:tex> and <fr:tex display="inline"><![CDATA[e'(Y \times  V)]]></fr:tex> are disjoint subsets of <fr:tex display="inline"><![CDATA[S]]></fr:tex>, the opponent has no moves in this game.
</html:p>
        <html:p>
  The tensorial unit is <fr:tex display="inline"><![CDATA[I = (*,S,1_S)]]></fr:tex> - in this game, the opponent simply chooses the outcome.
  Indeed, we have <fr:tex display="inline"><![CDATA[A \otimes  I \cong  A]]></fr:tex> - the player's choice amounts to choosing <fr:tex display="inline"><![CDATA[a \in  X]]></fr:tex>, while the opponent must choose a map <fr:tex display="inline"><![CDATA[* \to  U]]></fr:tex> - a point in <fr:tex display="inline"><![CDATA[U]]></fr:tex>, and a map <fr:tex display="inline"><![CDATA[X \to  S]]></fr:tex>, which has to equal the map <fr:tex display="inline"><![CDATA[x \mapsto  e(x,u)]]></fr:tex> corresponding to their chosen <fr:tex display="inline"><![CDATA[U]]></fr:tex>, so this is no choice at all.
</html:p>
        <html:p>
  There is a canonical map <fr:tex display="inline"><![CDATA[A \otimes  A^\bot  \to  I^\bot  = (S,*,1_S)]]></fr:tex>.
  In <fr:tex display="inline"><![CDATA[A \otimes  A^\bot ]]></fr:tex>, the player must choose a strategy and a counter-strategy.
  The opponent must choose a map <fr:tex display="inline"><![CDATA[X \to  X]]></fr:tex> and <fr:tex display="inline"><![CDATA[Y \to  Y]]></fr:tex> - of course the canonical choice is the identity.
  The outcome of this game is exactly the result of playing the player's two chosen strategies against each other - this is the element <fr:tex display="inline"><![CDATA[s \in  S]]></fr:tex> that the player's strategy is taken to.
</html:p>
        <html:p>
  In general, we can identify maps <fr:tex display="inline"><![CDATA[A \to  I^\bot ]]></fr:tex> with choices of strategy for the opponent - the point is sent to that strategy, while the map <fr:tex display="inline"><![CDATA[X \to  S]]></fr:tex> is constrained to being exactly the outcome corresponding to that strategy.
</html:p>
        <html:p>
  Dually, we can identify maps <fr:tex display="inline"><![CDATA[I \to  A]]></fr:tex> with strategies for the player.
  This of course means that a linear logic proof of the sequent <fr:tex display="inline"><![CDATA[\vdash  A]]></fr:tex> identifies a strategy for the player in the game defined by <fr:tex display="inline"><![CDATA[A]]></fr:tex>.
</html:p>
      </fr:mainmatter>
    </fr:tree>
  </fr:mainmatter>
  <fr:backmatter>
    <fr:tree show-metadata="false" hidden-when-empty="true">
      <fr:frontmatter>
        <fr:authors />
        <fr:title text="References">References</fr:title>
      </fr:frontmatter>
      <fr:mainmatter />
    </fr:tree>
    <fr:tree show-metadata="false" hidden-when-empty="true">
      <fr:frontmatter>
        <fr:authors />
        <fr:title text="Context">Context</fr:title>
      </fr:frontmatter>
      <fr:mainmatter />
    </fr:tree>
    <fr:tree show-metadata="false" hidden-when-empty="true">
      <fr:frontmatter>
        <fr:authors />
        <fr:title text="Backlinks">Backlinks</fr:title>
      </fr:frontmatter>
      <fr:mainmatter />
    </fr:tree>
    <fr:tree show-metadata="false" hidden-when-empty="true">
      <fr:frontmatter>
        <fr:authors />
        <fr:title text="Related">Related</fr:title>
      </fr:frontmatter>
      <fr:mainmatter />
    </fr:tree>
    <fr:tree show-metadata="false" hidden-when-empty="true">
      <fr:frontmatter>
        <fr:authors />
        <fr:title text="Contributions">Contributions</fr:title>
      </fr:frontmatter>
      <fr:mainmatter />
    </fr:tree>
  </fr:backmatter>
</fr:tree>
