{"id":1418,"date":"2011-05-01T15:38:58","date_gmt":"2011-05-01T19:38:58","guid":{"rendered":"http:\/\/scientopia.org\/blogs\/goodmath\/?p=1418"},"modified":"2011-05-01T15:38:58","modified_gmt":"2011-05-01T19:38:58","slug":"what-if-its-not-regular-pump-it","status":"publish","type":"post","link":"http:\/\/www.goodmath.org\/blog\/2011\/05\/01\/what-if-its-not-regular-pump-it\/","title":{"rendered":"What if it&#039;s not Regular? Pump it!"},"content":{"rendered":"<p> At this point, we&#8217;ve seen a fair bit about regular languages, and we&#8217;ve gone through the introduction to context free languages. We know one way of showing that a language is regular or context free: if you can write a (regular\/context free) grammar for a language, then that language is necessarily (regular\/context free). But&#8230; what if we have a language that we suspect is <em>not<\/em> regular? <\/p>\n<p><!--more--><\/p>\n<p> Suppose, for example, that we have a context free grammar for a language. The fact that we specified it using a context free grammar doesn&#8217;t mean that the language <em>requires<\/em> a context-free grammar. Sometimes it&#8217;s easier to write things with a CFG, even if it&#8217;s possible to write them with a regular grammar. We suspect that it really can&#8217;t be done using a regular grammar &#8211; but we&#8217;re not sure. Just because we <em>think<\/em> that we can&#8217;t write a regular grammar for the language doesn&#8217;t mean anything. It&#8217;s possible that we&#8217;re wrong &#8211; that there&#8217;s some way of writing an alternative grammar that&#8217;s regular. So.. how can we actually show that a language isn&#8217;t regular? (Or stepping up a level, that a language isn&#8217;t context free?)<\/p>\n<p> There&#8217;s a clever tool called the <em>pumping lemma<\/em>, which we can use to show that a language isn&#8217;t regular. (And there&#8217;s a variation of it that can be used to show that a language isn&#8217;t context free.) What it does is exploit a simple property of a regular language in a way that allows us to use it to show that a language isn&#8217;t regular.<\/p>\n<p> One of the fundamental limits of a regular language is that it can&#8217;t have deep patterns. It&#8217;s built one terminal symbol at a time, from left to right, without being able to look back at context. That&#8217;s essentially the process that we&#8217;re going to exploit. What the pumping lemma says is: given a language <img src='http:\/\/l.wordpress.com\/latex.php?latex=L&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='L' style='vertical-align:1%' class='tex' alt='L' \/>, if we take any string in <img src='http:\/\/l.wordpress.com\/latex.php?latex=L&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='L' style='vertical-align:1%' class='tex' alt='L' \/> above a grammar-specific minimum length, then that string will consist of three parts &#8211; a prefix (a), a center (b), and a suffix (c). If the string <img src='http:\/\/l.wordpress.com\/latex.php?latex=abc&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='abc' style='vertical-align:1%' class='tex' alt='abc' \/> is in <img src='http:\/\/l.wordpress.com\/latex.php?latex=L&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='L' style='vertical-align:1%' class='tex' alt='L' \/>, then any string that <em>repeats<\/em> the center part any number of times will <em>also<\/em> be part of <img src='http:\/\/l.wordpress.com\/latex.php?latex=L&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='L' style='vertical-align:1%' class='tex' alt='L' \/>. So we can <em>pump<\/em> the language: <img src='http:\/\/l.wordpress.com\/latex.php?latex=abc&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='abc' style='vertical-align:1%' class='tex' alt='abc' \/> will be in <img src='http:\/\/l.wordpress.com\/latex.php?latex=L&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='L' style='vertical-align:1%' class='tex' alt='L' \/>; <img src='http:\/\/l.wordpress.com\/latex.php?latex=abbc&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='abbc' style='vertical-align:1%' class='tex' alt='abbc' \/> will be in the language; <img src='http:\/\/l.wordpress.com\/latex.php?latex=abbbc&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='abbbc' style='vertical-align:1%' class='tex' alt='abbbc' \/> will be in the language, and so on. If we can find any string in <img src='http:\/\/l.wordpress.com\/latex.php?latex=L&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='L' style='vertical-align:1%' class='tex' alt='L' \/> where there&#8217;s no pumpable center, then <img src='http:\/\/l.wordpress.com\/latex.php?latex=L&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='L' style='vertical-align:1%' class='tex' alt='L' \/> isn&#8217;t regular.<\/p>\n<p> Let&#8217;s make it more formal, so that we can be precise. We need one quick notational thing &#8211; we&#8217;ll write the length of string <img src='http:\/\/l.wordpress.com\/latex.php?latex=s&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='s' style='vertical-align:1%' class='tex' alt='s' \/> as <img src='http:\/\/l.wordpress.com\/latex.php?latex=%7Cs%7C&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='|s|' style='vertical-align:1%' class='tex' alt='|s|' \/>. With that, the pumping lemma says:<\/p>\n<p> If <img src='http:\/\/l.wordpress.com\/latex.php?latex=L&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='L' style='vertical-align:1%' class='tex' alt='L' \/> is a regular language, then there exists an integer <img src='http:\/\/l.wordpress.com\/latex.php?latex=p%20ge%201&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='p ge 1' style='vertical-align:1%' class='tex' alt='p ge 1' \/> that depends solely on the structure of <img src='http:\/\/l.wordpress.com\/latex.php?latex=L&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='L' style='vertical-align:1%' class='tex' alt='L' \/>, such that for every string <img src='http:\/\/l.wordpress.com\/latex.php?latex=s%20in%20L&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='s in L' style='vertical-align:1%' class='tex' alt='s in L' \/>, if <img src='http:\/\/l.wordpress.com\/latex.php?latex=%7Cs%7C%20ge%20p&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='|s| ge p' style='vertical-align:1%' class='tex' alt='|s| ge p' \/>, <img src='http:\/\/l.wordpress.com\/latex.php?latex=s&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='s' style='vertical-align:1%' class='tex' alt='s' \/> can be described in terms of substrings <img src='http:\/\/l.wordpress.com\/latex.php?latex=a&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='a' style='vertical-align:1%' class='tex' alt='a' \/>, <img src='http:\/\/l.wordpress.com\/latex.php?latex=b&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='b' style='vertical-align:1%' class='tex' alt='b' \/>, and <img src='http:\/\/l.wordpress.com\/latex.php?latex=c&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='c' style='vertical-align:1%' class='tex' alt='c' \/> such that:<\/p>\n<ol>\n<li> <img src='http:\/\/l.wordpress.com\/latex.php?latex=s%20%3D%20abc&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='s = abc' style='vertical-align:1%' class='tex' alt='s = abc' \/><\/li>\n<li> <img src='http:\/\/l.wordpress.com\/latex.php?latex=%7Cab%7C%20le%20p&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='|ab| le p' style='vertical-align:1%' class='tex' alt='|ab| le p' \/><\/li>\n<li> <img src='http:\/\/l.wordpress.com\/latex.php?latex=%7Cb%7C%20ge%201&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='|b| ge 1' style='vertical-align:1%' class='tex' alt='|b| ge 1' \/><\/li>\n<li> <img src='http:\/\/l.wordpress.com\/latex.php?latex=forall%20i%20ge%200%2C%20a%28b%5Ei%29c%20in%20L&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='forall i ge 0, a(b^i)c in L' style='vertical-align:1%' class='tex' alt='forall i ge 0, a(b^i)c in L' \/><\/li>\n<\/ol>\n<p> Now, how do we use this? Let&#8217;s look at how it works on the canonical example of a non-regular language: <img src='http:\/\/l.wordpress.com\/latex.php?latex=x%5Enb%5Ey&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='x^nb^y' style='vertical-align:1%' class='tex' alt='x^nb^y' \/> &#8211; a string which has a string of <img src='http:\/\/l.wordpress.com\/latex.php?latex=x&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='x' style='vertical-align:1%' class='tex' alt='x' \/>s, followed by the same number of <img src='http:\/\/l.wordpress.com\/latex.php?latex=y&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='y' style='vertical-align:1%' class='tex' alt='y' \/>s.<\/p>\n<p> Let&#8217;s assume that this language is regular. We know that there must be some integer <img src='http:\/\/l.wordpress.com\/latex.php?latex=n&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='n' style='vertical-align:1%' class='tex' alt='n' \/>, and that for anything longer than <img src='http:\/\/l.wordpress.com\/latex.php?latex=n&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='n' style='vertical-align:1%' class='tex' alt='n' \/>, some part of any string longer than <img src='http:\/\/l.wordpress.com\/latex.php?latex=n&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='n' style='vertical-align:1%' class='tex' alt='n' \/> must be pumpable.<\/p>\n<p> So, let&#8217;s take the string <img src='http:\/\/l.wordpress.com\/latex.php?latex=x%5E%7Bn%2B1%7Dy%5E%7Bn%2B1%7D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='x^{n+1}y^{n+1}' style='vertical-align:1%' class='tex' alt='x^{n+1}y^{n+1}' \/>. By the pumping lemma, we know that sum of the lengths of the prefix and the middle of the string have to be less than or equal to <img src='http:\/\/l.wordpress.com\/latex.php?latex=n&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='n' style='vertical-align:1%' class='tex' alt='n' \/>. So the prefix, <img src='http:\/\/l.wordpress.com\/latex.php?latex=a&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='a' style='vertical-align:1%' class='tex' alt='a' \/>, is any sequence of <img src='http:\/\/l.wordpress.com\/latex.php?latex=x&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='x' style='vertical-align:1%' class='tex' alt='x' \/>s; we&#8217;ll say it&#8217;s length is <img src='http:\/\/l.wordpress.com\/latex.php?latex=m&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='m' style='vertical-align:1%' class='tex' alt='m' \/> where <img src='http:\/\/l.wordpress.com\/latex.php?latex=m%20ge%200&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='m ge 0' style='vertical-align:1%' class='tex' alt='m ge 0' \/>; and the middle, <img src='http:\/\/l.wordpress.com\/latex.php?latex=b&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='b' style='vertical-align:1%' class='tex' alt='b' \/> has to be a sequence of at least one <img src='http:\/\/l.wordpress.com\/latex.php?latex=x&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='x' style='vertical-align:1%' class='tex' alt='x' \/> &#8211; it&#8217;s <img src='http:\/\/l.wordpress.com\/latex.php?latex=n%20-%20m&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='n - m' style='vertical-align:1%' class='tex' alt='n - m' \/> <img src='http:\/\/l.wordpress.com\/latex.php?latex=x&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='x' style='vertical-align:1%' class='tex' alt='x' \/>s, and <img src='http:\/\/l.wordpress.com\/latex.php?latex=n%20-%20m%20ge%201&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='n - m ge 1' style='vertical-align:1%' class='tex' alt='n - m ge 1' \/>. That is, we&#8217;ve broken the string into <img src='http:\/\/l.wordpress.com\/latex.php?latex=x%5Emx%5E%7Bn-m%7Dxy%26%7Bn%2B1%7D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='x^mx^{n-m}xy&#038;{n+1}' style='vertical-align:1%' class='tex' alt='x^mx^{n-m}xy&#038;{n+1}' \/>.<\/p>\n<p> So if the language is regular, then we must be able to say that <img src='http:\/\/l.wordpress.com\/latex.php?latex=ab%5Eic&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='ab^ic' style='vertical-align:1%' class='tex' alt='ab^ic' \/> is in the language. So <img src='http:\/\/l.wordpress.com\/latex.php?latex=x%5Emx%5E%7Bn-m%7D%5E2xy%5E%7Bn%2B1%7D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='x^mx^{n-m}^2xy^{n+1}' style='vertical-align:1%' class='tex' alt='x^mx^{n-m}^2xy^{n+1}' \/> must be in the language. If we simplify that, <img src='http:\/\/l.wordpress.com\/latex.php?latex=x%7B2n-m%2B1%7Dy%5E%7Bn%2B1%7D&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='x{2n-m+1}y^{n+1}' style='vertical-align:1%' class='tex' alt='x{2n-m+1}y^{n+1}' \/> must be in the language. But <img src='http:\/\/l.wordpress.com\/latex.php?latex=2n-m%2B1%20%3E%20n%2B1&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='2n-m+1 > n+1&#8242; style=&#8217;vertical-align:1%&#8217; class=&#8217;tex&#8217; alt=&#8217;2n-m+1 > n+1&#8242; \/>. So the pumped string isn&#8217;t in the language &#8211; it has more <img src='http:\/\/l.wordpress.com\/latex.php?latex=x&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='x' style='vertical-align:1%' class='tex' alt='x' \/>s than <img src='http:\/\/l.wordpress.com\/latex.php?latex=y&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='y' style='vertical-align:1%' class='tex' alt='y' \/>s. That means that the language can&#8217;t be regular, because pumping it produced a string that&#8217;s not in the language.<\/p>\n<p> One thing to be aware of &#8211; a mistake I made far too often in my first class that covered this &#8211; is that the fact that a language is pumpable does <em>not<\/em> mean that the language <em>is<\/em> regular. All regular languages are pumpable, but not all pumpable languages are regular. If you can&#8217;t pump a language, you&#8217;ve proved it&#8217;s not regular. But the fact that you can pump it doesn&#8217;t tell you anything. If you want to prove that a language <em>is<\/em> regular, you have to either show a regular grammar, a regular expression, or a FSA that describes the language.<\/p>\n<p> The regular language pumping lemma that I showed above is really easy to use. It takes a bit of practice to get comfortable choosing the basic structure of a string to pump &#8211; but the proofs are pretty much always as short as the one above. For context free languages, the basic concept is similar: you exploit the structure of the class of languages to find a structure that can be repeated &#8211; and then you show that your language of interest doesn&#8217;t contain that sort of repetitive structure. But since CFLs are a lot more expressive, and can describe more complex structures, the repetitive structure that you exploit is, similarly, more complicated.<\/p>\n<p> The context free pumping lemma says:<\/p>\n<p> If <img src='http:\/\/l.wordpress.com\/latex.php?latex=L&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='L' style='vertical-align:1%' class='tex' alt='L' \/> is a context-free language, then there exists some integer <img src='http:\/\/l.wordpress.com\/latex.php?latex=p%20ge%201&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='p ge 1' style='vertical-align:1%' class='tex' alt='p ge 1' \/> suth that for any string <img src='http:\/\/l.wordpress.com\/latex.php?latex=s%20in%20L&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='s in L' style='vertical-align:1%' class='tex' alt='s in L' \/>, <img src='http:\/\/l.wordpress.com\/latex.php?latex=%7Cs%7C%20ge%20p&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='|s| ge p' style='vertical-align:1%' class='tex' alt='|s| ge p' \/>,  <img src='http:\/\/l.wordpress.com\/latex.php?latex=s&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='s' style='vertical-align:1%' class='tex' alt='s' \/> can be divided into substrings <img src='http:\/\/l.wordpress.com\/latex.php?latex=u%2C%20v%2C%20x%2C%20y%2C%20z&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='u, v, x, y, z' style='vertical-align:1%' class='tex' alt='u, v, x, y, z' \/> such that:<\/p>\n<ol>\n<li> <img src='http:\/\/l.wordpress.com\/latex.php?latex=s%20%3D%20uvxyz&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='s = uvxyz' style='vertical-align:1%' class='tex' alt='s = uvxyz' \/><\/li>\n<li> <img src='http:\/\/l.wordpress.com\/latex.php?latex=%7Cvxy%7C%20le%20p&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='|vxy| le p' style='vertical-align:1%' class='tex' alt='|vxy| le p' \/><\/li>\n<li> <img src='http:\/\/l.wordpress.com\/latex.php?latex=vy%20ge%201&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='vy ge 1' style='vertical-align:1%' class='tex' alt='vy ge 1' \/><\/li>\n<li> <img src='http:\/\/l.wordpress.com\/latex.php?latex=uv%5Enxy%5Enz%20in%20L&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='uv^nxy^nz in L' style='vertical-align:1%' class='tex' alt='uv^nxy^nz in L' \/><\/li>\n<\/ol>\n<p> So&#8230; Instead of just having a prefix, a middle, and a suffix, we&#8217;ve now got five subtrings. There are <em>two<\/em> repeated parts, instead of just one, and there can be something in between them. And we&#8217;re pumping repetitions of both the front and the back. So if <img src='http:\/\/l.wordpress.com\/latex.php?latex=uvxyz%20in%20L&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='uvxyz in L' style='vertical-align:1%' class='tex' alt='uvxyz in L' \/>, then <img src='http:\/\/l.wordpress.com\/latex.php?latex=uvvxyyz%20in%20L&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='uvvxyyz in L' style='vertical-align:1%' class='tex' alt='uvvxyyz in L' \/>, and <img src='http:\/\/l.wordpress.com\/latex.php?latex=uvvvxyyyz%20in%20L&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='uvvvxyyyz in L' style='vertical-align:1%' class='tex' alt='uvvvxyyyz in L' \/>, and so on.<\/p>\n<p> It is more complicated than the regular language pumping lemma, but it&#8217;s still not awful. And proofs in it end up looking very much like the proofs with the regular language pumping lemma. For example, we could look at the language <img src='http:\/\/l.wordpress.com\/latex.php?latex=1%5En2%5En3%5En&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='1^n2^n3^n' style='vertical-align:1%' class='tex' alt='1^n2^n3^n' \/>, which is a canonical example of a non-context-free language. The proof of that ends up being nearly exactly the same as the proof for <img src='http:\/\/l.wordpress.com\/latex.php?latex=x%5Eny%5En&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='x^ny^n' style='vertical-align:1%' class='tex' alt='x^ny^n' \/> for the context free languages. We set up the string so that both <img src='http:\/\/l.wordpress.com\/latex.php?latex=v&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='v' style='vertical-align:1%' class='tex' alt='v' \/> and <img src='http:\/\/l.wordpress.com\/latex.php?latex=y&#038;bg=FFFFFF&#038;fg=000000&#038;s=0' title='y' style='vertical-align:1%' class='tex' alt='y' \/> must be 2s. Then we pump it, and show that we end up with more 2s than 3s. <\/p>\n","protected":false},"excerpt":{"rendered":"<p>At this point, we&#8217;ve seen a fair bit about regular languages, and we&#8217;ve gone through the introduction to context free languages. We know one way of showing that a language is regular or context free: if you can write a (regular\/context free) grammar for a language, then that language is necessarily (regular\/context free). But&#8230; what [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[79],"tags":[107,132,217],"class_list":["post-1418","post","type-post","status-publish","format-standard","hentry","category-computation","tag-automata","tag-computation-2","tag-pumping-lemma"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p4lzZS-mS","jetpack_sharing_enabled":true,"jetpack_likes_enabled":true,"_links":{"self":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/posts\/1418","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/comments?post=1418"}],"version-history":[{"count":0,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/posts\/1418\/revisions"}],"wp:attachment":[{"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/media?parent=1418"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/categories?post=1418"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.goodmath.org\/blog\/wp-json\/wp\/v2\/tags?post=1418"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}