{"id":631,"date":"2015-05-17T18:28:44","date_gmt":"2015-05-17T16:28:44","guid":{"rendered":"https:\/\/projects.lsv.ens-paris-saclay.fr\/topology\/?page_id=631"},"modified":"2022-05-17T09:59:16","modified_gmt":"2022-05-17T07:59:16","slug":"powerdomains-and-hyper-spaces-ii-monads","status":"publish","type":"page","link":"https:\/\/projects.lsv.ens-paris-saclay.fr\/topology\/?page_id=631","title":{"rendered":"Powerdomains and hyper spaces II: monads"},"content":{"rendered":"<p>Let us deepen our understanding of the Hoare powerspace construction. We shall see that it defines a so-called <em>monad<\/em>. I&#8217;ll define everything needed to understand the latter as we go along.<\/p>\n<p><strong>Monads<\/strong><\/p>\n<p>I have briefly mentioned monads in <a title=\"Filters IV: compactifications\" href=\"https:\/\/projects.lsv.ens-paris-saclay.fr\/topology\/?page_id=352\">Filters IV<\/a>. There is an equivalent way of presenting monads (on a category <strong>C<\/strong>), as the following data (I don&#8217;t expect you to understand those equations for now, we shall illustrate them shortly):<\/p>\n<ul>\n<li>for each object <em>X<\/em> of <strong>C<\/strong>, an object <strong>T<\/strong><em>X<\/em> in\u00a0<strong>C<\/strong><\/li>\n<li>for each object\u00a0<em>X<\/em> of\u00a0<strong>C<\/strong>, a morphism \u03b7<em><sub>X<\/sub><\/em>: <em>X<\/em> \u2192 <strong>T<\/strong><em>X<\/em> called the\u00a0<em>unit<\/em> of the monad<\/li>\n<li>an\u00a0<em>extension operation<\/em>\u00a0\u2020, transforming every morphism f:\u00a0<em>X<\/em>\u00a0\u2192\u00a0<strong>T<\/strong><em>Y<\/em>\u00a0into a morphism f<sup>\u2020<\/sup>:\u00a0<strong>T<\/strong>X\u00a0\u2192\u00a0<strong>T<\/strong>Y, so that the following equations are satisfied (we explain them shortly):<\/li>\n<\/ul>\n<ol>\n<li>\u03b7<em><sub>X<\/sub><\/em><sup>\u2020<\/sup> = id<sub><strong>T<\/strong><em>X<\/em><\/sub><\/li>\n<li>for every morphism <em>f<\/em>: <em>X<\/em> \u2192 <strong>T<\/strong><em>Y<\/em>, <em>f<\/em><sup>\u2020<\/sup> o \u03b7<em><sub>X<\/sub><\/em> = <em>f<\/em><\/li>\n<li>for all morphisms\u00a0<em>f<\/em>:\u00a0<em>X<\/em>\u00a0\u2192\u00a0<strong>T<\/strong><em>Y<\/em> and\u00a0<em>g<\/em>:\u00a0<em>Y<\/em>\u00a0\u2192\u00a0<strong>T<\/strong>Z, (<em>g<\/em><sup>\u2020<\/sup> o <em>f<\/em>)<sup>\u2020<\/sup> = <em>g<\/em><sup>\u2020<\/sup> o <em>f<\/em><sup>\u2020<\/sup>.<\/li>\n<\/ol>\n<p>We then say that (<strong>T<\/strong>, \u03b7, \u2020) is a monad, or, by abuse of language, that <strong>T<\/strong> itself is a monad. \u00a0Let&#8217;s illustrate that on a concrete example.<\/p>\n<p>Consider the category\u00a0<strong>Set<\/strong> of sets for the category\u00a0<strong>C<\/strong>. \u00a0The morphisms from <em>X<\/em> to <em>Y<\/em> are just the functions from <em>X<\/em> to <em>Y<\/em>. \u00a0Let\u00a0<strong>T<\/strong><em>X<\/em> be the powerset\u00a0<strong>P<\/strong>(<em>X<\/em>) of\u00a0<em>X<\/em>, that is, the set of all subsets of\u00a0<em>X<\/em>. \u00a0Define \u03b7<em><sub>X<\/sub><\/em>\u00a0as mapping\u00a0<em>x<\/em> in\u00a0<em>X<\/em> to {<em>x<\/em>}, and for every set\u00a0<em>E<\/em>, let <em>f<\/em><sup>\u2020<\/sup>(<em>E<\/em>) be defined as the union of all the sets\u00a0<em>f<\/em>(<em>x<\/em>),\u00a0<em>x<\/em> in\u00a0<em>E<\/em>. \u00a0We check the monad equations as follows:<\/p>\n<ol>\n<li>\u03b7<em><sub>X<\/sub><\/em><sup>\u2020<\/sup> maps <em>E<\/em> to the union of the sets {<em>x<\/em>}, <em>x<\/em> in <em>E<\/em>, namely <em>E<\/em>, so \u03b7<em><sub>X<\/sub><\/em><sup>\u2020<\/sup>\u00a0= id<sub><strong>T<\/strong><em>X<\/em><\/sub>;<\/li>\n<li><em>f<\/em><sup>\u2020<\/sup> o \u03b7<em><sub>X<\/sub><\/em> maps every element x to <em>f<\/em><sup>\u2020<\/sup>({<em>x<\/em>}) =\u00a0<em>f<\/em>(<em>x<\/em>), hence is equal to\u00a0<em>f<\/em>;<\/li>\n<li>for every subset\u00a0<em>E<\/em>,\u00a0(<em>g<\/em><sup>\u2020<\/sup> o <em>f<\/em>)<sup>\u2020<\/sup>\u00a0(<em>E<\/em>) is the union over all\u00a0<em>x<\/em> in\u00a0<em>E<\/em> of <em>g<\/em><sup>\u2020<\/sup>(<em>f\u00a0<\/em>(<em>x<\/em>)), namely the union over all <em>x<\/em> in <em>E<\/em> of the union over all <em>y<\/em> in <em>f<\/em>(<em>x<\/em>) of <em>g<\/em>(<em>y<\/em>). On the other hand, (<em>g<\/em><sup>\u2020<\/sup> o <em>f<\/em><sup>\u2020<\/sup>) (<em>E<\/em>) is the union over all <em>y<\/em> in <em>f<\/em><sup>\u2020<\/sup>\u00a0(<em>E<\/em>) of <em>g<\/em>(<em>y<\/em>), and that is just the same thing.<\/li>\n<\/ol>\n<p><strong>The Kleisli category of a monad<\/strong><\/p>\n<p>There is a very rich theory of monads. \u00a0I would like to explain why the equations 1\u20143 above are what they are. \u00a0The reason is the construction of the so-called\u00a0<em>Kleisli category<\/em> <strong>C<sub>T<\/sub><\/strong> of the monad <strong>T<\/strong> on <strong>C<\/strong>.<\/p>\n<p>This is built as follows. \u00a0The objects of the <strong>C<sub>T<\/sub><\/strong> are the same as those of <strong>C<\/strong>; the only thing that changes are the morphisms: the morphisms from\u00a0<em>X<\/em> to\u00a0<em>Y<\/em> in <strong>C<sub>T<\/sub><\/strong> are exactly those from <em>X<\/em> to <strong>T<\/strong><em>Y<\/em> in the old category <strong>C<\/strong>. \u00a0The map \u03b7<em><sub>X<\/sub><\/em>: <em>X<\/em> \u2192 <strong>T<\/strong><em>X<\/em> serves as the identity morphism at <em>X<\/em> in <strong>C<sub>T<\/sub><\/strong>, and composition of\u00a0<em>f<\/em>:\u00a0<em>X<\/em>\u00a0\u2192\u00a0<strong>T<\/strong><em>Y<\/em> with\u00a0<em>g<\/em>:\u00a0<em>Y<\/em>\u00a0\u2192\u00a0<strong>T<\/strong>Z is given by <em>g<\/em><sup>\u2020<\/sup> o <em>f<\/em>: <em>X<\/em>\u00a0\u2192\u00a0<strong>T<\/strong><em>Z<\/em>. \u00a0The equations 1\u20143 are exactly what you need to show that this indeed forms a category: composition is associative, and the identity is neutral for composition both on the left and on the right. \u00a0In fact, you can check that the Kleisli &#8220;category&#8221; is really a category if\u00a0<em>and only if<\/em> the equations 1\u20143 are satisfied.<\/p>\n<p>In the case of the powerset monad on <strong>Set<\/strong>, the Kleisli category can be thought as a category of sets and\u00a0<em>binary relations<\/em> as morphisms. \u00a0Any binary relation\u00a0<em>R<\/em> on\u00a0<em>X<\/em>\u00a0x<em> Y<\/em> defines a Kleisli morphism <em>f<\/em>:\u00a0<em>X<\/em>\u00a0\u2192 <strong>P<\/strong>(<em>Y<\/em>), which maps every\u00a0<em>x<\/em> in\u00a0<em>X<\/em> to the set {<em>y<\/em> in\u00a0<em>Y<\/em> | (<em>x<\/em>, <em>y<\/em>) in <em>R<\/em>}. \u00a0Conversely, every Kleisli morphism\u00a0<em>f<\/em>:\u00a0<em>X<\/em>\u00a0\u2192\u00a0<strong>P<\/strong>(<em>Y<\/em>) defines a binary relation\u00a0<em>R<\/em> by (<em>x<\/em>,\u00a0<em>y<\/em>) in\u00a0<em>R\u00a0<\/em>if and only if\u00a0<em>y<\/em> is in\u00a0<em>f<\/em>(<em>x<\/em>). \u00a0You can check that the Kleisli identity (the unit of the monad) is the equality relation {(<em>x<\/em>, <em>x<\/em>)\u00a0\u00a0| <em>x<\/em> in <em>X<\/em>}, and that Kleisli composition is the ordinary composition of relations: <em>S<\/em> o <em>R<\/em> = {(<em>x<\/em>, <em>z<\/em>)\u00a0| (<em>x<\/em>,\u00a0<em>y<\/em>) in\u00a0<em>R<\/em> and (<em>y<\/em>, <em>z<\/em>) in <em>S<\/em> for some <em>y<\/em>}.<\/p>\n<p>One can also think of the set <em>X<\/em> as a set of states for some computer system. A Kleisli morphism <em>f<\/em> from <em>X<\/em> to <strong>T<\/strong><em>Y<\/em> tells you, given that you are in some state <em>x<\/em> in <em>X<\/em>, what the set <em>f<\/em> (<em>x<\/em>) of successor states is. In other words, <em>f<\/em> is a so-called <em>transition relation<\/em>. The fact that <em>f<\/em>(<em>x<\/em>) may contain more than one element means that you can choose <em>y<\/em> non-deterministically.<\/p>\n<p>Oh, before we examine the more complicated Hoare monad, recall that I had given another definition of monads in <a title=\"Filters IV: compactifications\" href=\"https:\/\/projects.lsv.ens-paris-saclay.fr\/topology\/?page_id=352\">Filters IV<\/a>. We obtain that presentation from a monad as defined above, as follows:<\/p>\n<ul>\n<li>a functor <strong>T<\/strong> from <strong>C<\/strong> to <strong>C<\/strong>; we already have its object parts, and on morphisms <em>f<\/em>: <em>X<\/em> \u2192\u00a0<em>Y<\/em>, we define\u00a0<strong>T<\/strong><em>f<\/em>:\u00a0<strong>T<\/strong><em>X<\/em>\u00a0\u2192\u00a0<strong>T<\/strong>Y as (\u03b7<em><sub>Y<\/sub><\/em> o <em>f<\/em>)<sup>\u2020<\/sup> (check, using 1\u20143, that this is indeed a functor!)<\/li>\n<li>a natural transformation \u03b7 from the identity functor to <strong>T<\/strong>; this is given as \u03b7<em><sub>X<\/sub><\/em> on each object <em>X<\/em> (check, using 1\u20143, that this is indeed natural in <em>X<\/em>);<\/li>\n<li>a natural transformation \u03bc from <strong>T<\/strong><sup>2<\/sup> to <strong>T<\/strong>, defined on each object <em>X<\/em> by \u03bc<em><sub>X<\/sub><\/em> = id<sub><strong>T<\/strong><em>X<\/em><\/sub><sup>\u2020<\/sup>: <strong>T<\/strong><sup>2<\/sup><em>X<\/em>\u00a0\u2192\u00a0<strong>T<\/strong><em>X<\/em> (check, again, that this is natural);<\/li>\n<li>all of these are also required to satisfied the three laws: (left unit) \u03bc<em><sub>X<\/sub><\/em> o \u03b7<sub><strong>T<\/strong><em>X<\/em><\/sub> = id<sub><strong>T<\/strong><em>X<\/em><\/sub>, (right unit) \u03bc<em><sub>X<\/sub><\/em> o <strong>T<\/strong>\u03b7<sub><em>X<\/em><\/sub> = id<sub><strong>T<\/strong><em>X<\/em><\/sub>, and (associativity) \u03bc<em><sub>X<\/sub><\/em> o <strong>T<\/strong>\u03bc<em><sub>X<\/sub><\/em> = \u03bc<em><sub>X<\/sub><\/em> o \u03bc<sub><strong>T<\/strong><em>X<\/em><\/sub>. \u00a0Again, I&#8217;ll let you check that those follow from 1\u20143.<\/li>\n<\/ul>\n<p>Conversely, any monad as given by a functor, a unit natural transformation, and a multiplication natural transformation satisfying the left unit, right unit, and associativity laws yields back a monad (<strong>T<\/strong>,\u00a0\u03b7,\u00a0\u2020) by defining <em>f<\/em><sup>\u2020<\/sup> as \u03bc<em><sub>X<\/sub><\/em> o <strong>T<\/strong><em>f<\/em>. \u00a0The fancy names &#8220;left unit&#8221;, &#8220;right unit&#8221;, and &#8220;associativity&#8221; really come from the fact that monads on <strong>C<\/strong>\u00a0are exactly the monoid objects in the monoidal category of endofunctors of\u00a0<strong>C<\/strong>, with composition as tensor product. \u00a0(Ignore that if this is your first time with monads, and think of it as some Zen koan: it is impenetrable, but it holds the truth.)<\/p>\n<p><strong>The H monad<\/strong><\/p>\n<p>We can now proceed with the more complicated case of the <strong>H<\/strong> powerspace construction. \u00a0That this defines a monad is again due to Andrea Schalk [1].\u00a0 We take <strong>C<\/strong>=<strong>Top<\/strong>, and let\u00a0<strong>T<\/strong><em>X=<\/em><strong>H<\/strong>(<em>X<\/em>)\u00a0with the upper (=lower Vietoris) topology.<\/p>\n<p>We already have a continuous map \u03b7<em><sub>X<\/sub><\/em>:\u00a0<em>X<\/em>\u00a0\u2192\u00a0<strong>H<\/strong>(<em>X<\/em>), which sends\u00a0<em>x<\/em>\u00a0in\u00a0<em>X<\/em>\u00a0to the closure \u2193<em>x<\/em>\u00a0of\u00a0<em>x<\/em>. \u00a0This will be our unit.<\/p>\n<p>Given any continuous map <em>f<\/em>: <em>X \u2192 <\/em><strong>H<\/strong>(<em>Y<\/em>), we define <em>f<\/em><sup>\u2020<\/sup>: <strong>H<\/strong>(<em><em>X<\/em><\/em>) \u2192 <strong>H<\/strong>(<em>Y<\/em>) by letting <em>f<\/em><sup>\u2020<\/sup> (<em>F<\/em>) be the <em>closure<\/em> of the union of all the closed subsets <em>f<\/em>(<em>x<\/em>), <em>x<\/em> in <em>F<\/em>. We need to take the closure because a union of closed subsets may fail to be closed. What we have done here is taking a supremum in <strong>H<\/strong>(<em>Y<\/em>), ordered by inclusion: suprema are closures of unions. In summary, <em>f<\/em><sup>\u2020<\/sup> (<em>F<\/em>) = sup {<em>f<\/em> (<em>x<\/em>) | <em>x<\/em> in <em>F<\/em>}.<\/p>\n<p>Let us check that this indeed defines a monad. \u00a0This is somehow more complicated than for the powerset monad.<\/p>\n<ul>\n<li>To show that <em>f<\/em><sup>\u2020<\/sup> is continuous, we only have to show that the inverse image of \u25ca<em>V<\/em>, for <em>V<\/em> open in <em>Y<\/em>, is open in <strong>H<\/strong>(<em><em>X<\/em><\/em>). Since the closure of a set intersects an open <em>V<\/em> if and only if the set itself intersects <em>V<\/em> (Corollary 4.1.28), that inverse image is \u25ca<em>f<\/em><sup>-1<\/sup> (\u25ca<em>V<\/em>), and we are done.<\/li>\n<\/ul>\n<p>We now turn to the monad equations.<\/p>\n<ol>\n<li>First, \u03b7<em><sub>X<\/sub><\/em><sup>\u2020<\/sup> = id<sub><strong>H<\/strong>(<em>X<\/em>)<\/sub>. Indeed, the left hand side maps each closed set <em>F<\/em> to the closure of the union of all the sets \u2193<em>x<\/em>, <em>x<\/em> in <em>F<\/em>. That union is just <em>F<\/em>, and since <em>F<\/em> is closed, its closure is itself.<\/li>\n<li>Second, for every continuous map <em>f<\/em>: <em>X \u2192<\/em><strong> H<\/strong>(<em>Y<\/em>), <em>f<\/em><sup>\u2020<\/sup> o <em>\u03b7<em><sub>X<\/sub><\/em><\/em> = <em>f<\/em>. The left hand side maps every <em>x<\/em> in <em>X<\/em> to the closure of the union of all the sets <em>f<\/em>(<em>x&#8217;<\/em>), where <em>x&#8217;<\/em> ranges over \u2193<em>x<\/em>. Since <em>f<\/em> is continuous hence monotonic, every such set <em>f<\/em>(<em>x&#8217;<\/em>) is included in <em>f<\/em>(<em>x<\/em>), so (<em>f<\/em><sup>\u2020<\/sup> o <em>\u03b7<em><sub>X<\/sub><\/em><\/em>) (<em>x<\/em>) is included in <em>f<\/em>(<em>x<\/em>); the converse inclusion is because <em>x<\/em> itself is in \u2193<em>x<\/em>.<\/li>\n<li>Third, for all continuous maps <em>f<\/em>: <em>X \u2192<\/em><strong> H<\/strong>(<em>Y<\/em>) and <em>g<\/em>: <em>Y \u2192<\/em><strong> H<\/strong>(<em>Z<\/em>), we have two maps from <strong>H<\/strong>(<em>X<\/em>) to <strong>H<\/strong>(<em>Z<\/em>), namely (<em>g<\/em><sup>\u2020<\/sup> o <em>f<\/em>)<sup>\u2020<\/sup> and <em>g<\/em><sup>\u2020<\/sup> o <em>f<\/em><sup>\u2020<\/sup>. We claim that they are equal: (<em>g<\/em><sup>\u2020<\/sup> o <em>f<\/em>)<sup>\u2020<\/sup> = <em>g<\/em><sup>\u2020<\/sup> o <em>f<\/em><sup>\u2020<\/sup>&#8230; but if you try to prove this directly, you&#8217;ll suffer as hell. \u00a0Instead, recall that for continuous\u00a0<em>h<\/em> for which <em>h<\/em><sup>\u2020<\/sup> makes sense, for every open subset <em>W<\/em>, (<em>h<\/em><sup>\u2020<\/sup>)<sup>-1<\/sup> (\u25ca<em>W<\/em>) = \u25ca<em>f<\/em><sup>-1<\/sup> (\u25ca<em>W<\/em>): this is how we proved that <em>h<\/em><sup>\u2020<\/sup> was continuous. Using that, we check that, for every open subset <em>W<\/em> of <em>Z<\/em>, the inverse image of \u25ca<em>W<\/em> by (<em>g<\/em><sup>\u2020<\/sup> o <em>f<\/em>)<sup>\u2020<\/sup> and by <em>g<\/em><sup>\u2020<\/sup> o <em>f<\/em><sup>\u2020<\/sup> is the same, namely \u25ca<em>f<\/em><sup>-1<\/sup> (\u25ca<em>g<\/em><sup>-1<\/sup> (\u25ca<em>W<\/em>)). \u00a0This is enough to conclude that (<em>g<\/em><sup>\u2020<\/sup> o <em>f<\/em>)<sup>\u2020<\/sup> = <em>g<\/em><sup>\u2020<\/sup> o <em>f<\/em><sup>\u2020<\/sup> are identical, by Stone duality, and because <strong>H<\/strong>(<em>X<\/em>) is sober. We can also see that directly: for every closed subset <em>F<\/em> of <em>X<\/em>, for every open subset\u00a0<em>W<\/em> of <em>Z<\/em>, <em>F<\/em> is in the inverse image of \u25ca<em>W<\/em> by (<em>g<\/em><sup>\u2020<\/sup> o <em>f<\/em>)<sup>\u2020<\/sup> if and only if it is in in the inverse image of \u25ca<em>W<\/em> by <em>g<\/em><sup>\u2020<\/sup> o <em>f<\/em><sup>\u2020<\/sup>, that is, for every open subset <em>W<\/em> of <em>Z<\/em>, (<em>g<\/em><sup>\u2020<\/sup> o <em>f<\/em>)<sup>\u2020<\/sup> (<em>F<\/em>) intersects <em>W<\/em> if and only if (<em>g<\/em><sup>\u2020<\/sup> o <em>f<\/em><sup>\u2020<\/sup>) (<em>F<\/em>) intersects <em>W<\/em>;\u00a0hence they are equal closed sets.<\/li>\n<\/ol>\n<p>Just like the powerset monad on\u00a0<strong>Set<\/strong>, the Hoare monad\u00a0<strong>H<\/strong> on\u00a0<strong>Top<\/strong> can be thought as some kind of powerset, with extra topological information. \u00a0As for the powerset monad, the Kleisli morphisms encode some form of non-deterministic choice, called\u00a0<em>angelic<\/em> non-determinism. \u00a0Let me postpone the explanation of that denomination, as I would prefer to explain a few things about <em>theories<\/em> of monads, and monad\u00a0<em>algebras<\/em>&#8230; next time. \u00a0We shall see that, in a precise sense, the theory of the\u00a0<strong>H<\/strong> monad is given by the following axioms:<\/p>\n<ul>\n<li>(unit) <em>a<\/em> \u2228 0 = <em>a<\/em><\/li>\n<li>(associativity) (<em>a<\/em> \u2228 <em>b<\/em>) \u2228 <em>c<\/em> = <em>a<\/em> \u2228 (<em>b<\/em> \u2228 <em>c<\/em>)<\/li>\n<li>(commutativity) <em>a<\/em> \u2228 <em>b<\/em> = <em>b<\/em> \u2228 <em>a<\/em><\/li>\n<li>(idempotence) <em>a<\/em> \u2228 <em>a<\/em> = <em>a<\/em><\/li>\n<li>(inflationary)\u00a0<em>a<\/em> \u2264 <em>a<\/em> \u2228 <em>b<\/em><\/li>\n<\/ul>\n<p>Note that, if you interpret\u00a0\u2228 as binary union of closed sets, 0 as the empty set, and \u2264 as inclusion, then those (in)equalities are trivially satisfied. \u00a0A topological space with a continuous map \u2228 satisfying the above (in)equalities is called an inflationary semi-lattice. \u00a0What we shall see is that, for each space\u00a0<em>X<\/em>,\u00a0<strong>H<\/strong>(<em>X<\/em>) is the free sober inflationary semi-lattice above\u00a0<em>X<\/em>, as proved by Schalk [1]&#8230; and I&#8217;ll try to explain what this means.<\/p>\n<p style=\"text-align: right;\">\u2014 <a href=\"https:\/\/www.lsv.ens-paris-saclay.fr\/~goubault\/?l=en\" rel=\"attachment wp-att-993\">Jean Goubault-Larrecq<\/a>\u00a0(May 17th, 2015)<img loading=\"lazy\" decoding=\"async\" class=\"wp-image-993 alignright\" src=\"https:\/\/projects.lsv.ens-paris-saclay.fr\/topology\/wp-content\/uploads\/2016\/08\/jgl-2011.png\" alt=\"jgl-2011\" width=\"32\" height=\"44\" \/><\/p>\n<p>[1] Andrea Schalk. <a title=\"Andrea Schalk's PhD thesis\" href=\"https:\/\/www.cs.man.ac.uk\/~schalk\/publ\/diss.ps.gz\"><em>Algebras for Generalized Power Constructions<\/em><\/a>. PhD Thesis, TU Darmstadt, 1993.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Let us deepen our understanding of the Hoare powerspace construction. We shall see that it defines a so-called monad. I&#8217;ll define everything needed to understand the latter as we go along. Monads I have briefly mentioned monads in Filters IV. &hellip; <a href=\"https:\/\/projects.lsv.ens-paris-saclay.fr\/topology\/?page_id=631\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"open","template":"","meta":{"_crdt_document":"","footnotes":""},"class_list":["post-631","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/projects.lsv.ens-paris-saclay.fr\/topology\/index.php?rest_route=\/wp\/v2\/pages\/631","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/projects.lsv.ens-paris-saclay.fr\/topology\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/projects.lsv.ens-paris-saclay.fr\/topology\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/projects.lsv.ens-paris-saclay.fr\/topology\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/projects.lsv.ens-paris-saclay.fr\/topology\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=631"}],"version-history":[{"count":5,"href":"https:\/\/projects.lsv.ens-paris-saclay.fr\/topology\/index.php?rest_route=\/wp\/v2\/pages\/631\/revisions"}],"predecessor-version":[{"id":5374,"href":"https:\/\/projects.lsv.ens-paris-saclay.fr\/topology\/index.php?rest_route=\/wp\/v2\/pages\/631\/revisions\/5374"}],"wp:attachment":[{"href":"https:\/\/projects.lsv.ens-paris-saclay.fr\/topology\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=631"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}