<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:dw="https://www.dreamwidth.org">
  <id>tag:dreamwidth.org,2013-01-03:1881992</id>
  <title>Anton Salikhmetov</title>
  <subtitle>Anton Salikhmetov</subtitle>
  <author>
    <name>Anton Salikhmetov</name>
  </author>
  <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/"/>
  <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom"/>
  <updated>2018-11-08T23:03:08Z</updated>
  <dw:journal username="codedot" type="personal"/>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:183222</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/183222.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=183222"/>
    <title>Elementary Microeconomics of the Talmudic Rule</title>
    <published>2018-11-08T23:03:08Z</published>
    <updated>2018-11-08T23:03:08Z</updated>
    <category term="ideas"/>
    <category term="elementary mathematics"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;a href="https://dx.doi.org/10.2139/ssrn.3271944"&gt;https://dx.doi.org/10.2139/ssrn.3271944&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This paper takes a look at the Talmudic rule aka the 1/N rule aka the uniform investment strategy from the viewpoint of elementary microeconomics. Specifically, we derive the cardinal utility function for a Talmud-obeying agent which happens to have the Cobb-Douglas form. Further, we investigate individual supply and demand due to rebalancing and compare them to market depth of an exchange. Finally, we discuss how operating as a liquidity provider can benefit the Talmud-obeying agent with every exchange transaction in terms of the identified utility function.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=183222" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:182952</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/182952.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=182952"/>
    <title>arXiv:1808.06351 [cs.LO]</title>
    <published>2018-08-21T04:58:01Z</published>
    <updated>2018-08-21T04:58:01Z</updated>
    <category term="lambda calculus"/>
    <category term="elementary mathematics"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;a href="https://arxiv.org/abs/1808.06351"&gt;https://arxiv.org/abs/1808.06351&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Lambda Calculus with Explicit Read-back&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;This paper introduces a new term rewriting system that is similar to the embedded read-back mechanism for interaction nets presented in our previous work, but is easier to follow than in the original setting and thus to analyze its properties. Namely, we verify that it correctly represents the lambda calculus. Further, we show that there is exactly one reduction sequence that starts with any term in our term rewriting system. Finally, we represent the leftmost strategy which is known to be normalizing.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=182952" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:182592</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/182592.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=182592"/>
    <title>Missing equivalence in the interaction calculus</title>
    <published>2018-07-04T08:55:19Z</published>
    <updated>2018-07-04T08:55:19Z</updated>
    <category term="elementary mathematics"/>
    <category term="lambda calculus"/>
    <category term="ideas"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Configuration&lt;br /&gt;&lt;br /&gt;&amp;lt;... | x = α(...y...), y = β(...x...)&amp;gt;&lt;br /&gt;&lt;br /&gt;can be reduced to both&lt;br /&gt;&lt;br /&gt;&amp;lt;... | x = α(...β(...x...)...)&amp;gt;&lt;br /&gt;&lt;br /&gt;and&lt;br /&gt;&lt;br /&gt;&amp;lt;... | y = β(...α(...y...)...)&amp;gt;,&lt;br /&gt;&lt;br /&gt;which syntactically appears as a counterexample to strong confluence, while essentially representing the same configuration.&lt;br /&gt;&lt;br /&gt;Is there a way to formalize equivalence between those two normal forms?&lt;br /&gt;&lt;br /&gt;I think there is:&lt;br /&gt;&lt;br /&gt;&lt;img src="https://pbs.twimg.com/media/DhP8KA0WkAASGdK.jpg:large" alt=""&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=182592" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:182141</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/182141.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=182141"/>
    <title>arXiv:1806.07275 [cs.LO]</title>
    <published>2018-06-20T08:38:46Z</published>
    <updated>2018-06-29T04:35:31Z</updated>
    <category term="elementary mathematics"/>
    <category term="lambda calculus"/>
    <dw:security>public</dw:security>
    <dw:reply-count>2</dw:reply-count>
    <content type="html">&lt;a href="https://arxiv.org/abs/1806.07275"&gt;https://arxiv.org/abs/1806.07275&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Upward confluence in the interaction calculus&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;The lambda calculus is not upward confluent, one of counterexamples being known due to Plotkin. This paper explores upward confluence in the interaction calculus. Can an interaction system have this property? We positively answer this question and also provide a necessary and sufficient condition for stronger one-step upward confluence. However, the provided condition is not necessary for upward confluence as we prove that the interaction system of the linear lambda calculus is upward confluent.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=182141" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:181585</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/181585.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=181585"/>
    <title>Optimal Talmudic Zigzag</title>
    <published>2018-04-23T12:34:14Z</published>
    <updated>2018-06-03T09:42:54Z</updated>
    <category term="howtos"/>
    <category term="elementary mathematics"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;a href="https://dx.doi.org/10.2139/ssrn.3166840"&gt;https://dx.doi.org/10.2139/ssrn.3166840&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;This paper studies the Talmudic rule aka the 1/N rule aka the uniform investment strategy on the microscopic scale, that is on the scale of single transactions. We focus on the simplest case of only two assets and show that the Talmudic rule results in each transaction to increase geometric mean of assets, regardless of price change direction. Then, we answer the following &lt;a href="https://mathoverflow.net/questions/296886/optimal-talmudic-zigzag/"&gt;question&lt;/a&gt;: given any sequence of prices, how to find its optimal subsequence, maximizing the total growth of the geometric mean of assets? We conclude with an algorithm that can be used to analyze various sequences of prices and help develop trading strategies based on the Talmudic rule.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=181585" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:181371</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/181371.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=181371"/>
    <title>Exhausting Combinators</title>
    <published>2018-02-04T14:23:23Z</published>
    <updated>2018-02-08T18:06:50Z</updated>
    <category term="elementary mathematics"/>
    <category term="lambda calculus"/>
    <category term="programming"/>
    <category term="ideas"/>
    <category term="howtos"/>
    <category term="talks"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;i&gt;Early this year, I made a &lt;a href="http://lambda-the-ultimate.org/node/5487"&gt;post on LtU&lt;/a&gt; about the experimental "abstract" algorithm in &lt;a href="https://www.npmjs.com/package/@alexo/lambda"&gt;MLC&lt;/a&gt;. Soon after that, &lt;a href="http://gallium.inria.fr/~scherer/"&gt;Gabriel Scherer&lt;/a&gt; suggested doing exhaustive search through all possible inputs up to a particular size. Recently, I decided to conduct such an experiment. Here are&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Some results&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;I managed to collect some results [1]. First of all, I had to pick a particular definition for "size" of a λ-term, because there are many. I chose the one that is used in A220894 [2]:&lt;br /&gt;&lt;br /&gt;size(x) = 0;&lt;br /&gt;size(λx.M) = 1 + size(M);&lt;br /&gt;size(M N) = 1 + size(M) + size(N).&lt;br /&gt;&lt;br /&gt;For sizes from 1 to 9, inclusively, there exist 5663121 closed λ-terms. I tested all of them against both "abstract" [3] and "optimal" [4] algorithms in MLC, with up to 250 interactions per term. The process took almost a day of CPU time. Then, I automatically compared them [5] using a simple awk(1) script (also available in [1]), looking for terms for which normal form or number of β-reductions using "abstract" would deviate from "optimal".&lt;br /&gt;&lt;br /&gt;No such terms have been found this way. Surprisingly, there have been identified apparent Lambdascope counterexamples instead, the shortest of which is λx.(λy.y y) (λy.x (λz.y)) resulting in a fan that reaches the interaction net interface. I plan to look into this in near future.&lt;br /&gt;&lt;br /&gt;As for sizes higher than 9, testing quickly becomes unfeasible. For example, there are 69445532 closed terms of sizes from 1 to 10, inclusively, which takes a lot of time and space just to generate and save them. [6] is a 200MB gzip(1)'ed tarball (4GB unpacked) with all these terms split into 52 files with 1335491 terms each. In my current setting, it is unfeasible to test them.&lt;br /&gt;&lt;br /&gt;I may come up with optimizations at some point to make it possible to process terms of sizes up to 10, but 11 and higher look completely hopeless to me.&lt;br /&gt;&lt;br /&gt;[1] &lt;a href="https://gist.github.com/codedot/3b99edd504678e160999f12cf30da420"&gt;https://gist.github.com/codedot/3b99edd504678e160999f12cf30da420&lt;/a&gt;&lt;br /&gt;[2] &lt;a href="http://oeis.org/A220894"&gt;http://oeis.org/A220894&lt;/a&gt;&lt;br /&gt;[3] &lt;a href="https://drive.google.com/open?id=1O2aTULUXuLIl3LArehMtwmoQiIGB62-A"&gt;https://drive.google.com/open?id=1O2aTULUXuLIl3LArehMtwmoQiIGB62-A&lt;/a&gt;&lt;br /&gt;[4] &lt;a href="https://drive.google.com/open?id=16W_HSmwlRB6EAW5XxwVb4MqvkEZPf9HN"&gt;https://drive.google.com/open?id=16W_HSmwlRB6EAW5XxwVb4MqvkEZPf9HN&lt;/a&gt;&lt;br /&gt;[5] &lt;a href="https://drive.google.com/open?id=1ldxxnbzdxZDk5-9VMDzLvS7BouxwbCfH"&gt;https://drive.google.com/open?id=1ldxxnbzdxZDk5-9VMDzLvS7BouxwbCfH&lt;/a&gt;&lt;br /&gt;[6] &lt;a href="https://drive.google.com/open?id=1XjEa-N40wSqmSWnesahnxz6SXVUzzBig"&gt;https://drive.google.com/open?id=1XjEa-N40wSqmSWnesahnxz6SXVUzzBig&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=181371" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:181057</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/181057.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=181057"/>
    <title>Bitcoin Proof of Work in Pure Lambda Calculus</title>
    <published>2017-11-24T20:40:27Z</published>
    <updated>2017-12-01T17:33:11Z</updated>
    <category term="lambda calculus"/>
    <category term="elementary mathematics"/>
    <category term="howtos"/>
    <category term="programming"/>
    <dw:security>public</dw:security>
    <dw:reply-count>3</dw:reply-count>
    <content type="html">From &lt;a href="https://codedot.dreamwidth.org/158739.html"&gt;command line&lt;/a&gt; to MLC:&lt;br /&gt;&lt;br /&gt;&lt;div style="background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;&lt;span style="color: #c65d09; font-weight: bold"&gt;$&lt;/span&gt; npm i -g &lt;a href="https://www.npmjs.com/package/@alexo/lambda"&gt;@alexo/lambda&lt;/a&gt;
&lt;span style="color: #888888"&gt;└── @alexo/lambda@0.3.6&lt;/span&gt;

&lt;span style="color: #c65d09; font-weight: bold"&gt;$&lt;/span&gt; node work2mlc.js getwork.json 381353fa | tee test.mlc
&lt;span style="color: #888888"&gt;Mid = x: x&lt;/span&gt;
&lt;span style="color: #888888"&gt;        hex(24e39e50)&lt;/span&gt;
&lt;span style="color: #888888"&gt;        hex(1efebbc8)&lt;/span&gt;
&lt;span style="color: #888888"&gt;        hex(fb545b91)&lt;/span&gt;
&lt;span style="color: #888888"&gt;        hex(db1ff3ca)&lt;/span&gt;
&lt;span style="color: #888888"&gt;        hex(a66f356d)&lt;/span&gt;
&lt;span style="color: #888888"&gt;        hex(7482c0f3)&lt;/span&gt;
&lt;span style="color: #888888"&gt;        hex(acc0caa8)&lt;/span&gt;
&lt;span style="color: #888888"&gt;        hex(00f10dad);&lt;/span&gt;

&lt;span style="color: #888888"&gt;Data = x: x&lt;/span&gt;
&lt;span style="color: #888888"&gt;        hex(a7f5f990)&lt;/span&gt;
&lt;span style="color: #888888"&gt;        hex(fd270c51)&lt;/span&gt;
&lt;span style="color: #888888"&gt;        hex(378a0e1c);&lt;/span&gt;

&lt;span style="color: #888888"&gt;Nonce = hex(381353fa);&lt;/span&gt;

&lt;span style="color: #888888"&gt;Zero32 (Pop 8 (RunHash Mid Data Nonce))&lt;/span&gt;
&lt;span style="color: #c65d09; font-weight: bold"&gt;$&lt;/span&gt; lambda -pem lib.mlc -f test.mlc
&lt;span style="color: #888888"&gt;3335648(653961), 17837 ms&lt;/span&gt;
&lt;span style="color: #888888"&gt;v1, v2: v1&lt;/span&gt;
&lt;span style="color: #c65d09; font-weight: bold"&gt;$&lt;/span&gt; 
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;a href="https://gist.github.com/codedot/721469173df8dd197ba5bddbe022c487"&gt;https://gist.github.com/codedot/721469173df8dd197ba5bddbe022c487&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=181057" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:180914</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/180914.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=180914"/>
    <title>Implementation of SHA-256 in Macro Lambda Calculus</title>
    <published>2017-11-22T20:15:04Z</published>
    <updated>2017-11-24T21:18:18Z</updated>
    <category term="programming"/>
    <category term="howtos"/>
    <category term="elementary mathematics"/>
    <category term="lambda calculus"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;a href="https://gist.github.com/codedot/721469173df8dd197ba5bddbe022c487"&gt;https://gist.github.com/codedot/721469173df8dd197ba5bddbe022c487&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div style="background: #ffffff; overflow:auto;width:auto;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;&lt;span style="color: #c65d09; font-weight: bold"&gt;$&lt;/span&gt; npm i -g &lt;a href="https://www.npmjs.com/package/@alexo/lambda"&gt;@alexo/lambda&lt;/a&gt;
&lt;span style="color: #888888"&gt;└── @alexo/lambda@0.3.6&lt;/span&gt;

&lt;span style="color: #c65d09; font-weight: bold"&gt;$&lt;/span&gt; make
&lt;span style="color: #888888"&gt;	shasum -a 256 /dev/null&lt;/span&gt;
&lt;span style="color: #888888"&gt;e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855  /dev/null&lt;/span&gt;
&lt;span style="color: #888888"&gt;	lambda -pem lib.mlc &amp;#39;Pri32 hex(e3b0c442)&amp;#39;&lt;/span&gt;
&lt;span style="color: #888888"&gt;857(230), 19 ms&lt;/span&gt;
&lt;span style="color: #888888"&gt;_1 _1 _1 _0 _0 _0 _1 _1 _1 _0 _1 _1 _0 _0 _0 _0 _1 _1 _0 _0 _0 _1 _0 _0 _0 _1 _0 _0 _0 _0 _1 _0&lt;/span&gt;
&lt;span style="color: #888888"&gt;	lambda -pem lib.mlc &amp;#39;Pri32 (Shift 8 (Hash1 NullMsg))&amp;#39;&lt;/span&gt;
&lt;span style="color: #888888"&gt;3247721(688463), 17211 ms&lt;/span&gt;
&lt;span style="color: #888888"&gt;_1 _1 _1 _0 _0 _0 _1 _1 _1 _0 _1 _1 _0 _0 _0 _0 _1 _1 _0 _0 _0 _1 _0 _0 _0 _1 _0 _0 _0 _0 _1 _0&lt;/span&gt;
&lt;span style="color: #888888"&gt;	shasum -a 256 &amp;lt;/dev/null | xxd -r -p | shasum -a 256&lt;/span&gt;
&lt;span style="color: #888888"&gt;5df6e0e2761359d30a8275058e299fcc0381534545f55cf43e41983f5d4c9456  -&lt;/span&gt;
&lt;span style="color: #888888"&gt;	lambda -pem lib.mlc &amp;#39;Pri32 hex(5df6e0e2)&amp;#39;&lt;/span&gt;
&lt;span style="color: #888888"&gt;856(230), 15 ms&lt;/span&gt;
&lt;span style="color: #888888"&gt;_0 _1 _0 _1 _1 _1 _0 _1 _1 _1 _1 _1 _0 _1 _1 _0 _1 _1 _1 _0 _0 _0 _0 _0 _1 _1 _1 _0 _0 _0 _1 _0&lt;/span&gt;
&lt;span style="color: #888888"&gt;	lambda -pem lib.mlc &amp;#39;Pri32 (Shift 8 (Hash2 NullMsg))&amp;#39;&lt;/span&gt;
&lt;span style="color: #888888"&gt;6448027(1373506), 38750 ms&lt;/span&gt;
&lt;span style="color: #888888"&gt;_0 _1 _0 _1 _1 _1 _0 _1 _1 _1 _1 _1 _0 _1 _1 _0 _1 _1 _1 _0 _0 _0 _0 _0 _1 _1 _1 _0 _0 _0 _1 _0&lt;/span&gt;
&lt;span style="color: #c65d09; font-weight: bold"&gt;$&lt;/span&gt; 
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=180914" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:173644</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/173644.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=173644"/>
    <title>Упражнения из Барендрегта, глава 16</title>
    <published>2015-05-18T12:05:14Z</published>
    <updated>2015-05-19T01:04:16Z</updated>
    <category term="lambda calculus"/>
    <category term="elementary mathematics"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">После &lt;a href="http://codedot.dreamwidth.org/173424.html"&gt;пятнадцатой главы&lt;/a&gt; в плане &lt;a href="http://codedot.dreamwidth.org/167509.html"&gt;"Как читать Барендрегта"&lt;/a&gt; остается только одна, самая главная - шестнадцатая. В ней, наконец-то, показано, что HP-полное расширение всех осмысленных λ-теорий - это H*, и другого не дано.&lt;br /&gt;&lt;br /&gt;16.5.1. Покажем, что&lt;br /&gt;(i) для любого замкнутого терма Z в теории H доказуемо&lt;br /&gt;Z Ω~n = Ω для некоторого n:&lt;br /&gt;если Z неразрешим, то он равен Ω по определению H, иначе&lt;br /&gt;Z имеет головную нормальную форму x1,..., xn: xi Z1 ... Zn, и тогда&lt;br /&gt;Z Ω~n неразрешим и равен Ω по определению H;&lt;br /&gt;(ii) если A x -&amp;gt;&amp;gt; z: z (A (x Ω)), то A Z = A Z' доказуемо&lt;br /&gt;в теории H* для любых термов Z и Z', а&lt;br /&gt;в теории H только для замкнутых Z и Z':&lt;br /&gt;ввиду (i) для некоторого n имеем&lt;br /&gt;A Z -&amp;gt;&amp;gt;βηΩ z1: z1 (...(zn: zn (A Ω))...) &amp;lt;&amp;lt;-βηΩ A Z',&lt;br /&gt;в HP-полной H* содержится, в частности,&lt;br /&gt;непротиворечивая Hω ввиду ее осмысленности,&lt;br /&gt;поэтому там выводимо также следствие A Z = A Z',&lt;br /&gt;но в H правило ω не имеет места.&lt;br /&gt;&lt;br /&gt;16.5.2. Покажем, что в H имеет место ext0, но не имеет места ext:&lt;br /&gt;ext влечет правило η, а оно не имеет места в H;&lt;br /&gt;пусть теперь M x = N x, где M и N замкнуты, тогда&lt;br /&gt;M x = N x = Ω может быть только по причине M = N = Ω,&lt;br /&gt;а в противном случае M = x1,..., xm: xi M1 ... Mn и N = y1,..., yn: yj N1 ... Nn,&lt;br /&gt;для которых даже в λ доказуемо M = N (см. &lt;a href="http://codedot.dreamwidth.org/172247.html"&gt;упр. 2.4.13&lt;/a&gt;).&lt;br /&gt;&lt;br /&gt;16.5.3-16.5.7. Обойдемся без альтернативных доказательств теорем,&lt;br /&gt;рисования редукционных графов, рассмотрения оригинальных&lt;br /&gt;построений Морриса и теоремы Мальцева.&lt;br /&gt;&lt;br /&gt;16.5.9. Покажем, что терм M разрешим тогда и только тогда,&lt;br /&gt;когда теория λ + (M = Y K) противоречива:&lt;br /&gt;(=&amp;gt;) если M разрешим, то для некоторых термов N1,..., Nn&lt;br /&gt;M N1 ... Nn = K, при этом Y K N1 ... Nn = Y K, но K # Y K (см. &lt;a href="http://codedot.dreamwidth.org/172877.html"&gt;упр. 6.8.3&lt;/a&gt;);&lt;br /&gt;(&amp;lt;=) если λ + (M = Y K) противоречива, то M разрешим, иначе&lt;br /&gt;в непротиворечивой H выводилось бы M = Ω = Y K.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=173644" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:173424</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/173424.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=173424"/>
    <title>Упражнения из Барендрегта, глава 15</title>
    <published>2015-05-17T18:04:01Z</published>
    <updated>2015-05-17T18:04:42Z</updated>
    <category term="lambda calculus"/>
    <category term="elementary mathematics"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">От упражнений остальных глав &lt;a href="http://codedot.dreamwidth.org/173251.html"&gt;второй части монографии&lt;/a&gt; в 27 уже морщит, как в 50, поэтому перейду сразу к пятнадцатой, где вводится понятие редукции-оракула, которое анализирует доказуемость в осмысленной теории H и говорит, на что еще нет смысла тратить время.&lt;br /&gt;&lt;br /&gt;15.4.1. Покажем, что любой терм M Ωη-сильно нормализуем:&lt;br /&gt;η-редукцию всегда можно отложить, при этом&lt;br /&gt;любой терм имеет единственную Ω-нормальную форму и&lt;br /&gt;единственную η-нормальную форму.&lt;br /&gt;&lt;br /&gt;15.4.2. Будем писать x \in_R M, если x входит в любой N =R M.&lt;br /&gt;Покажем, что&lt;br /&gt;(i) x \in_βηΩ A x, если A = ω ω, где ω = a, x, z: z (a a (x Ω)):&lt;br /&gt;редукция A x -&amp;gt;&amp;gt;β &amp;lt;...&amp;lt;A (χ^n Ω)&amp;gt;...&amp;gt; не порождает Ω-редексов;&lt;br /&gt;(ii) имеется замкнутый терм O, такой, что&lt;br /&gt;O x [n] z -&amp;gt;&amp;gt;β z Ω~n (O x [n + 1] z) и x \in_βηΩ O x [0]:&lt;br /&gt;возьмем O = Θ (o, x, n, z: (W z n) (o x (S+ n) z)),&lt;br /&gt;где W = Θ (w, z, n: (Zero n) z (w z (P- n) Ω));&lt;br /&gt;(iii) для любого замкнутого F есть замкнутый H, такой, что&lt;br /&gt;H c i a -&amp;gt;&amp;gt;β x: x I (F c a (H c i (S+ a))) и x \in_βηΩ H c x [0]:&lt;br /&gt;возьмем H = Θ (h, c, i, a: (x: x I (F c a (h c i (S+ a)))));&lt;br /&gt;ни в редукции O, ни в редукции H не появляется Ω-редексов.&lt;br /&gt;&lt;br /&gt;15.4.3. Пусть у нас есть такая рекурсивная функция f, что&lt;br /&gt;f(n) = 0, если n входит в некоторое множество, иначе f(n) = 1.&lt;br /&gt;Тогда покажем, что&lt;br /&gt;(i)-(ii) λ + {Ω [n] = T | f(n) = 0} + {Ω [n] = F | f(n) = 1} непротиворечива:&lt;br /&gt;λ-определим f через G и вспомним, что терм Ω легкий, поэтому&lt;br /&gt;его можно, в частности, приравнять к n: Zero (G n);&lt;br /&gt;(iii) без нерекурсивных функций не существует и континуума.&lt;br /&gt;&lt;br /&gt;15.4.4 (Клоп). Практически решено в указании.&lt;br /&gt;&lt;br /&gt;15.4.5. Пусть T = λ + {Ω [0] Z = Ω [1] Ζ | Z замкнут}. Покажем, что&lt;br /&gt;(i) (Якопини) в T недоказуемо Ω [0] = Ω [1]:&lt;br /&gt;заметим, что теория λ + Ω = n: (Zero n) x (y: x y)&lt;br /&gt;непротиворечива из-за легкости Ω и при этом содержит в себе T,&lt;br /&gt;но без аксиомы η недоказуемо равенство x = y: x y;&lt;br /&gt;(ii) если T' = T + (Ω (x: Ω [0] x) = T) + (Ω (x: Ω [1] x) = F),&lt;br /&gt;то T' непротиворечива, а T'ω противоречива:&lt;br /&gt;в T'ω из дополнительных аксиом T следует Ω [0] = Ω [1],&lt;br /&gt;а дополнительные аксиомы T' приведут к T = F, но T # F,&lt;br /&gt;непротиворечивость же T' никому нахуй не сдалась.&lt;br /&gt;&lt;br /&gt;15.4.6-15.4.10. Дальше совсем скучно.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=173424" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:173251</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/173251.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=173251"/>
    <title>Упражнения из Барендрегта, глава 6 (продолжение)</title>
    <published>2015-05-12T15:35:57Z</published>
    <updated>2015-05-12T15:35:57Z</updated>
    <category term="lambda calculus"/>
    <category term="elementary mathematics"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">В предыдущей серии были &lt;a href="http://codedot.dreamwidth.org/172877.html"&gt;упр. 6.8.1-6.8.12&lt;/a&gt;. Сейчас будет вторая половина.&lt;br /&gt;&lt;br /&gt;6.8.13. Покажем, что цифровая система d адекватна тогда и только тогда, когда&lt;br /&gt;существуют такие Md и Nd, что Md [n] = dn и Nd dn = [n] для всех n:&lt;br /&gt;(=&amp;gt;) Md = Y (f, n: (Zero n) d0 (Sd+ (f (P- n)))), Nd = Y (f, n: (Zerod n) [0] (S+ (f (Pd- n))));&lt;br /&gt;(&amp;lt;=) Pd- = n: Md (P- (Nd n)).&lt;br /&gt;Отсюда получим, что для адекватных цифровых систем d и d'&lt;br /&gt;существуют M и N, что M dn = dn' и N dn' = dn:&lt;br /&gt;возьмем M = n: Md' (Nd n) и N = n: Md (Nd' n).&lt;br /&gt;&lt;br /&gt;6.8.14 (Клоп). Покажем, что M = N N~25, где&lt;br /&gt;N = abcdefghijklmnopqstuvwxyzr: r (thisisafixedpointcombinator),&lt;br /&gt;является комбинатором неподвижной точки:&lt;br /&gt;заметим, что M = r: r (M r) = r: r (r (M r)) = ..., и уже все понятно,&lt;br /&gt;но все-таки проверим по теореме о магической силе S I:&lt;br /&gt;(y, f: f (y f)) (r: r (M r) = f: f ((r: r (M r)) f) = f: f (f (M f)) = M.&lt;br /&gt;&lt;br /&gt;6.8.15. Упражнение задом наперед:&lt;br /&gt;(iii) нерекурсивные функции - это иллюзия;&lt;br /&gt;(ii) для рекурсивной функции f: N^2 -&amp;gt; N построим попарно различные замкнутые термы X0, X1,..., такие, что Xn Xm = Xf(n, m):&lt;br /&gt;сначала воспользуемся лямбда-определимостью f и построим такой F, что&lt;br /&gt;F [n] [m] = [f(n, m)], предположим Xi = x: x A [n], тогда&lt;br /&gt;Xn Xm = Xm A [n] = (x: x A [m]) A [n] = A A [m] [n], а нам надо, чтобы было&lt;br /&gt;A A [m] [n] = x: x A (F [n] [m]) =&amp;gt; A = a, m, n: (x: x a (F n m)), при этом&lt;br /&gt;Xn = Xm =&amp;gt; Xn K = Xm K =&amp;gt; [n] = [m], то есть термы Xi действительно разные;&lt;br /&gt;(i) для произвольного конечного множества X = {x1,..., xn} с бинарной операцией * на X, покажем, что&lt;br /&gt;Xi Xj = Xk &amp;lt;=&amp;gt; xi * xj = xk для всех i, j, k &amp;lt;= n:&lt;br /&gt;заметим, что Xi Xj = Xk &amp;lt;=&amp;gt; k = f(i, j), и теперь&lt;br /&gt;достаточно представить операцию * функцией f,&lt;br /&gt;тогда xi * xj = xk &amp;lt;=&amp;gt; k = f(i, j).&lt;br /&gt;&lt;br /&gt;6.8.16. Строить псевдоцифровую систему на неразрешимых термах - дело неблагодарное, так как при переходе от λ к H она схлопывается, как мыльный пузырь.&lt;br /&gt;&lt;br /&gt;6.8.17 (Б. Фридман). Покажем, что f - адекватная цифровая система, если&lt;br /&gt;f0 = x: K, Sf+ = x, y: y x, Pf- = x: x I и Zerof = x, y, z: x (t: F) y z:&lt;br /&gt;Sf+ fn = y: y fn # fn, иначе (y: y fn) (K M) = fn (K M) =&amp;gt; M = K,&lt;br /&gt;Zerof f0 = y, z: f0 (t: F) y z = (x: K) (t: F) = T;&lt;br /&gt;Zerof (Sf+ fn) = y, z: Sf+ fn (t: F) y z = y, z: (t: F) fn y z = F;&lt;br /&gt;Pf- (Sf+ fn) = Sf+ fn I = I fn = fn.&lt;br /&gt;&lt;br /&gt;6.8.18 (Ершов). Ой, ну его.&lt;br /&gt;&lt;br /&gt;6.8.19. Покажем, что перед нами адекватные цифровые системы:&lt;br /&gt;(i) (Ван дер Поль и др.) последовательность pn = x, y: x y~n:&lt;br /&gt;Sp+ (x, y: x y~n) = x, y: x y~n y = x, y: Sp+ x y y = Y (f, x, y: f x y y);&lt;br /&gt;(ii) (Бем, Дедзани-Чанкальини)&lt;br /&gt;d0 = Y, Sd+ = x, y: y x P для любого P:&lt;br /&gt;Pd- = x: x K =&amp;gt; Pd- (Sd+ dn) = Sd+ dn K = K dn P = dn,&lt;br /&gt;Zerod = x: x (K (K T)) I =&amp;gt;&lt;br /&gt;Zerod d0 = Y (K (K T)) I = K (K T) (...) I = K T I = T и&lt;br /&gt;Zerod (Sd+ dn) = Sd+ dn (K (K T)) I = K (K T) dn P I = K T P I = T I = F;&lt;br /&gt;e0 = K, Se+ = x, y: y x Y:&lt;br /&gt;Se+ en K = K en Y = en, поэтому годится тот же&lt;br /&gt;Pe- = Pd- = x: x K,&lt;br /&gt;Se+ en (K (K T)) I = K (K T) en Y I = T I = F, но&lt;br /&gt;e0 (K (K T)) I = K (K (K T)) I = K (K T), поэтому придется взять другой&lt;br /&gt;Zeroe = x: x (K (K T)) I I F;&lt;br /&gt;комбинаторы неподвижной точки не имеют нормальной формы,&lt;br /&gt;поэтому адекватная цифровая система не обязательно нормальна.&lt;br /&gt;&lt;br /&gt;6.8.20-6.8.22. Ну и хватит уже цифровых систем.&lt;br /&gt;&lt;br /&gt;6.8.23 (Дж. Терлаув). Теорема Скотта без использования второй теоремы о неподвижной точке уже практически доказана в указании к этому упражнению.&lt;br /&gt;&lt;br /&gt;6.8.24. Покажем, что G X = G (F (G X)), если X = Y (x: F (G x)):&lt;br /&gt;X = (x: F (G x)) X = F (G (X)) =&amp;gt; G X = G (F (G X)).&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=173251" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:172877</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/172877.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=172877"/>
    <title>Упражнения из Барендрегта, глава 6</title>
    <published>2015-05-11T18:44:32Z</published>
    <updated>2015-05-11T19:08:30Z</updated>
    <category term="elementary mathematics"/>
    <category term="lambda calculus"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">После небольшого отступления к &lt;a href="http://codedot.dreamwidth.org/172647.html"&gt;четвертой главе&lt;/a&gt;, вернемся к плану &lt;a href="http://codedot.dreamwidth.org/167509.html"&gt;"Как читать Барендрегта"&lt;/a&gt;. Итак, вторая часть, глава шестая. Она содержит довольно много упражнений, поэтому сейчас будет только половина. &lt;br /&gt;&lt;br /&gt;6.8.1. Докажем, что &amp;lt;M1,..., Mn&amp;gt; = &amp;lt;N1,..., Nn&amp;gt; &amp;lt;=&amp;gt; M1 = N1,..., Mn = Nn:&lt;br /&gt;(=&amp;gt;) &amp;lt;M1,..., Mn&amp;gt; (x1,..,xn: xi) = &amp;lt;N1,..., Nn&amp;gt; (x1,..,xn: xi) =&amp;gt; Mi = Ni;&lt;br /&gt;(&amp;lt;=) x = x =&amp;gt; x M1 ... Mn = x N1 ... Nn =&amp;gt; x: x M1 ... Mn = x: x N1 ... Nn.&lt;br /&gt;&lt;br /&gt;6.8.2. Построим замкнутые термы K8 и A, такие, что:&lt;br /&gt;(i) K8 x = K8:&lt;br /&gt;K8 = y: K8 = (f, y: f) K8 = Y (f, y: f);&lt;br /&gt;(ii) A x = x A:&lt;br /&gt;A = y: y A = (f, y: y f) A = Y (f, y: y f).&lt;br /&gt;&lt;br /&gt;6.8.3. Покажем, что для построенного K8 имеет место K # K8:&lt;br /&gt;K = K8 =&amp;gt; K M I = K8 M I =&amp;gt; M = K8.&lt;br /&gt;&lt;br /&gt;6.8.4. Поздоровавшись с LISP, построим замкнутые термы M и N, такие что&lt;br /&gt;(i) M [n] x y = x y~n для всех n:&lt;br /&gt;заметив, что M [n + 1] x y = x y~n+1 = (x y~n) y = (M [n] x y) y,&lt;br /&gt;получаем M = Y (f, n, x, y: (Zero n) x ((f (P- n) x y) y));&lt;br /&gt;(ii) N [n] [i] = x: x F~i T для i &amp;lt; n и N [n] [n] = x: x F~n:&lt;br /&gt;введем сначала G [n] [i] = i &amp;lt; n ? T : F, взяв&lt;br /&gt;G = Y (f, n, i: (Zero n) F ((Zero i) T (f (P- n) (P- i)))),&lt;br /&gt;а потом используем M и G, чтобы определить&lt;br /&gt;N = n, i: (G n i) (y, x: M [i] x F) (y, x: (M [i] x F) T).&lt;br /&gt;&lt;br /&gt;6.8.5. Построим последовательность термов A0, A1..., такую, что&lt;br /&gt;A0 = S и An+1 = An An+2:&lt;br /&gt;для этого возьмем An = A [n], где&lt;br /&gt;A [n] = n = 0 ? S : (A [n - 1]) (A [n + 1]), то есть&lt;br /&gt;A = Y (a, n: (Zero n) S ((a (P- n)) (a (S+ n))).&lt;br /&gt;&lt;br /&gt;6.8.6 (Россер). Все интернеты уже сто лет дрочат на то, как работают сложение, умножение и показательная функция для цифр Черча.&lt;br /&gt;&lt;br /&gt;6.8.7. Пропустим супер-пупер-обобщение теорем о неподвижной точке.&lt;br /&gt;&lt;br /&gt;6.8.8. Покажем, что для любого терма M существует такой M' в нормальной форме, что M' I = M:&lt;br /&gt;построим сначала N, заменив в M каждый редекс (yi: Pi) Qi на x (yi: Pi) Qi,&lt;br /&gt;тогда M' = x: N не будет содержать редексов, но при этом M' I -&amp;gt;&amp;gt; M.&lt;br /&gt;&lt;br /&gt;6.8.9. В HP-полном расширении λ все комбинаторы неподвижной точки равны, поэтому утверждения&lt;br /&gt;(i) Y_M = Y_N =&amp;gt; M = N и&lt;br /&gt;(ii) Ym = Yn =&amp;gt; m = n&lt;br /&gt;там не имеют места в общем случае, так что не будем забивать голову.&lt;br /&gt;&lt;br /&gt;6.8.10. Покажем, что существует такой M, что M = [M]:&lt;br /&gt;[M] = M =&amp;gt; I [M] = M, а по второй теореме о неподвижной точке&lt;br /&gt;можно взять M = W [W], где W = x: I (Ap x (Num x)).&lt;br /&gt;&lt;br /&gt;6.8.11 (Черч). Покажем, что множество {M | M = I} не рекурсивно:&lt;br /&gt;данное множество содержит I, но не содержит K, поэтому оно нетривиально,&lt;br /&gt;при этом оно по определению замкнуто относительно равенства,&lt;br /&gt;а мы уже знаем, что множества с двумя этими свойствами не рекурсивны.&lt;br /&gt;&lt;br /&gt;6.8.12. Эффективно неотделимые множества определены за пределами монографии (см. &lt;a href="http://inis.jinr.ru/sl/vol1/CMC/%D0%A0%D0%BE%D0%B4%D0%B6%D0%B5%D1%80%D1%81,_%D0%A2%D0%B5%D0%BE%D1%80%D0%B8%D1%8F_%D1%80%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B2%D0%BD%D1%8B%D1%85_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D0%B9_%D0%B8_%D1%8D%D1%84%D1%84%D0%B5%D0%BA%D1%82%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F_%D0%B2%D1%8B%D1%87%D0%B8%D1%81%D0%BB%D0%B8%D0%BC%D0%BE%D1%81%D1%82%D1%8C,1972.pdf"&gt;"Теория рекурсивных функций и эффективная вычислимость"&lt;/a&gt; Роджерса, с. 126).&lt;br /&gt;&lt;br /&gt;Продолжение следует...&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=172877" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:172647</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/172647.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=172647"/>
    <title>Упражнения из Барендрегта, глава 4</title>
    <published>2015-05-10T15:13:56Z</published>
    <updated>2015-05-11T19:04:40Z</updated>
    <category term="elementary mathematics"/>
    <category term="lambda calculus"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Немного отклонюсь от плана &lt;a href="http://codedot.dreamwidth.org/167509.html"&gt;"Как читать Барендрегта"&lt;/a&gt; и от &lt;a href="http://codedot.dreamwidth.org/172360.html"&gt;третьей главы монографии&lt;/a&gt; внезапно перейду аж сразу к четвертой. Внимание: будут ссылки на &lt;a href="http://codedot.dreamwidth.org/172247.html"&gt;упражнения второй главы&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;4.3.1. См. упр. 2.4.12 (i).&lt;br /&gt;&lt;br /&gt;4.3.2 (Виссер). Замкнутый терм M называется легким, если для всех замкнутых термов N теория λ + (M = N) непротиворечива. В предположении легкости терма M докажем следующие утверждения.&lt;br /&gt;(i) M N легкий для любого замкнутого терма N:&lt;br /&gt;в непротиворечивой λ + (M = K M) выводимо M N = K M N =&amp;gt; M N = M,&lt;br /&gt;откуда следует, что λ + (M N = Q) непротиворечива для любого замкнутого Q;&lt;br /&gt;(ii) M неразрешим, иначе бы M N1 ... Nn = I для некоторых Ni,&lt;br /&gt;а из (i) следовало бы, что λ + (I = K) непротиворечива, но I # K (упр. 2.4.2 (i));&lt;br /&gt;(iii)-(iv) если функция f(n) = #Pn рекурсивна, то она представима некоторым лямбда-термом F, таким, что F [n] = Pn, и&lt;br /&gt;тогда в непротиворечивой λ + (M = F) выводимы M [n] = F [n] =&amp;gt; M [n] = Pn для всех n;&lt;br /&gt;если же f(i) не является рекурсивной функцией, то я в эти игры не играю, потому что не считаю вопрос "Есть ли Б-г на Марсе?" уместным в этой теме.&lt;br /&gt;(v) λ + {M = N | M и N легкие} непротиворечива:&lt;br /&gt;мы уже знаем о непротиворечивости осмысленной теории H, которая приравнивает все неразрешимые термы, а в пунтке (ii) мы доказали, что все легкие термы неразрешимы.&lt;br /&gt;&lt;br /&gt;4.3.3. Модельные соображения не включены в программу намеренно.&lt;br /&gt;&lt;br /&gt;4.3.4. Покажем, что не существует такого M, чтобы для любых N теория H + (M = N) была непротиворечивой:&lt;br /&gt;в 4.3.2 (ii) мы доказали, что M должен быть неразрешимым, но&lt;br /&gt;в H все неразрешимые термы приравнены к W3 = (x: x x x) (x: x x x), а&lt;br /&gt;из упр. 2.4.12 (ii) мы знаем, что I # W3.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=172647" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:172360</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/172360.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=172360"/>
    <title>Упражнения из Барендрегта, глава 3</title>
    <published>2015-05-09T21:02:35Z</published>
    <updated>2017-09-27T13:37:14Z</updated>
    <category term="lambda calculus"/>
    <category term="elementary mathematics"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Вчера были &lt;a href="http://codedot.dreamwidth.org/172247.html"&gt;упражнения ко второй главе монографии&lt;/a&gt;, а сегодня пробежка галопом по третьей. &lt;br /&gt;&lt;br /&gt;3.5.1. Нарисовать графы G(M) для каких угодно термов каждый может и сам.&lt;br /&gt;&lt;br /&gt;3.5.2. А вот найти термы по заданному бета-графу - это уже интересно:&lt;br /&gt;(i) M1 -&amp;gt; ... -&amp;gt; Mn -&amp;gt; M1 для произвольного n:&lt;br /&gt;M1 = N N~n, где N = x1,..., xn: xn ... x2 x1 x1;&lt;br /&gt;(ii) чтобы добавить к (i) Mi -&amp;gt; Mi для всех i, возьмем M1 Ω;&lt;br /&gt;(iii) чтобы добавить к (i) Mi -&amp;gt; I для всех i, возьмем (x: I) M1;&lt;br /&gt;второй граф имеет терм (x: x ω (y: x y)) ω -&amp;gt; Ω (y: ω y) -&amp;gt; Ω ω, Ω (y: ω y) -&amp;gt; Ω (y: ω y), Ω ω -&amp;gt; Ω ω;&lt;br /&gt;третий граф имеет терм K I Ω -&amp;gt; (x: I) Ω -&amp;gt; I, K I Ω -&amp;gt; Κ Ι Ω, (x: I) Ω -&amp;gt; (x: I) Ω;&lt;br /&gt;(iv) чтобы сделать бесконечный цилиндр из (i), возьмем M1 ((x: x x x) (x: x x x)).&lt;br /&gt;&lt;br /&gt;3.5.3. Построим терм M0, такой, что M0 -&amp;gt;&amp;gt;β M1 -&amp;gt;η M2 -&amp;gt;&amp;gt;β M3 -&amp;gt;η M4 -&amp;gt;&amp;gt;β ...:&lt;br /&gt;M0 = x: (y: M) x x -&amp;gt;&amp;gt;β x: M x -&amp;gt;η M -&amp;gt;&amp;gt;β Μ0;&lt;br /&gt;M найдем, как будто мы до сих пор никогда не слышали про Y:&lt;br /&gt;M = (f, x: (y: f) x x) M, M = W W, W = w: (f, x: (y: f) x x) (w w).&lt;br /&gt;&lt;br /&gt;3.5.4. Пусть M = (b, x, z: z ( b b x)) (b, x, z: z (b b x)) x. Чтобы получить кайф, построив G(M) и установив, что для каждого n этот граф имеет n-мерный куб в качестве подграфа, нужно сначала покурить каннабис на родине автора.&lt;br /&gt;&lt;br /&gt;3.5.5 (Бем). Бем не обидится, если не все будут рисовать G(M).&lt;br /&gt;&lt;br /&gt;3.5.6 (Виссер). (i) Это мое самое любимое упражнение. Покажем, что имеется единственный редекс R с одной вершиной в G(R).&lt;br /&gt;Если R = (x: M) N, то M[x := N] = (x: M) N. Рассмотрим все случаи:&lt;br /&gt;1) x не входит в M =&amp;gt; M = R =&amp;gt; R = (x: R) N - это не терм;&lt;br /&gt;2) M = x =&amp;gt; x[x := N] = R =&amp;gt; N = R =&amp;gt; R = (x: x) R - это не терм;&lt;br /&gt;3) M = P Q;&lt;br /&gt;4) M = y: M' =&amp;gt; R = y: M'[x := N] - это не редекс.&lt;br /&gt;Значит, R = (x: P Q) N =&lt;br /&gt;= (P Q)[x := N] = P[x := N] Q[x := N] = (x: P Q) N =&amp;gt; P[x := N] = x: P Q и Q[x := N] = N;&lt;br /&gt;Рассмотрим все случаи для P:&lt;br /&gt;1) x не входит в P =&amp;gt; P = (x: P Q) - это не терм;&lt;br /&gt;2) P = x =&amp;gt; N = x: x Q;&lt;br /&gt;3) P = y: P', но тогда в R было бы два редекса, а не один;&lt;br /&gt;4) P = P1 P2 =&amp;gt; P[x := N] = P1[x := N] P2[x := N] - это аппликация, а не абстракция.&lt;br /&gt;Значит, R = (x: x Q) (x: x Q) -&amp;gt; (x: x Q) Q[x := x: x Q] =&amp;gt; Q[x := N] = x: x Q.&lt;br /&gt;Рассмотрим все случаи для Q:&lt;br /&gt;1) x не входит в Q =&amp;gt; Q = x: x Q - это не терм;&lt;br /&gt;2) Q = x;&lt;br /&gt;3) Q = Q1 Q2 =&amp;gt; Q1[x := N] Q2[x := N] - это аппликация, а не абстракция;&lt;br /&gt;4) Q = y: Q' =&amp;gt; y: Q'[x := N] = x: x Q =&amp;gt; Q'[x := N] = y Q, но тогда x не входит в Q.&lt;br /&gt;Таким образом, R = (x: x x) (x: x x).&lt;br /&gt;(ii) А вот это не самое любимое мое упражнение.&lt;br /&gt;&lt;br /&gt;3.5.7-3.5.10. Бла-бла-бла про хитровытраханные графы и понятия редукции.&lt;br /&gt;Может быть, они и полезные упражнения, но я иду дальше.&lt;br /&gt;&lt;br /&gt;3.5.11. Будем писать M ^ N, если L -&amp;gt;&amp;gt; M и L -&amp;gt;&amp;gt; N для некоторого терма L. Докажем, что&lt;br /&gt;(i) K I K ^ K I S: возьмем K (K I S) K;&lt;br /&gt;(ii) (x: a x) b ^ (y: y b) a: возьмем (y: (x: y x) b) a;&lt;br /&gt;(iii) (x: x c) c ^ (x: x x) c: возьмем (y: (x: x y) y) c;&lt;br /&gt;(iv) (x: b x) c ^ (x: x) b c: возьмем (y, x: y x) b c;&lt;br /&gt;(v) (x: b x (b x)) c ^ (x: x x) (b c): возьмем (z, y: (x: x x) (z y)) b c;&lt;br /&gt;(vi) (x: b x) c ^ (x: x) (b c): возьмем I ((y, x: y x) b c);&lt;br /&gt;(vii)* (Плоткин) ...ах, если бы я смог доказать, что не имеет места (x: b x (b c)) c ^ (x: x x) (b c), то я бы прочувствовал, что бета-редукция не обладает "перевернутым свойством CR".&lt;br /&gt;&lt;br /&gt;3.5.12-3.5.15. Дальше в редукционные дебри углубляться не буду.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=172360" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:172247</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/172247.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=172247"/>
    <title>Упражнения из Барендрегта, глава 2</title>
    <published>2015-05-08T20:17:54Z</published>
    <updated>2015-05-09T07:33:43Z</updated>
    <category term="elementary mathematics"/>
    <category term="lambda calculus"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Я решил пробежаться еще раз по плану &lt;a href="http://codedot.dreamwidth.org/167509.html"&gt;"Как читать Барендрегта"&lt;/a&gt;. По дороге буду срать в вашу френд-ленту следующим содержимым. (Чтобы не переключаться все время еще и на греческую раскладку, воспользуюсь синтаксисом, похожим на &lt;a href="https://github.com/euromake/mlc/blob/master/example.mlc"&gt;MLC&lt;/a&gt;.)&lt;br /&gt;&lt;br /&gt;2.4.1. Покажем, что следующие термы имеют нормальную форму:&lt;br /&gt;(i) (y: y y y) ((a, b: a) I (S S)) = (y: y y y) I = I I I = I;&lt;br /&gt;(ii) (y, z: z y) ((x: x x x) (x: x x x)) (w: I) = (w: I) ((x: x x x) (x: x x x)) = I;&lt;br /&gt;(iii) S S S S S S S = S S (S S S S S) = S S (S S (S S S)), если заметить S S M S = S S (M S);&lt;br /&gt;(iv)* S (S S) (S S) (S S) S S... сдаюсь без калькулятора.&lt;br /&gt;&lt;br /&gt;2.4.2. Покажем, что следующие пары термов несравнимы:&lt;br /&gt;(i) I # K, иначе I I M = K I M =&amp;gt; M = I;&lt;br /&gt;(ii) I # S, иначе I K M I = S K M I =&amp;gt; K M I = K I (M I) =&amp;gt; M = I;&lt;br /&gt;(iii) x y # x x, иначе x, y: x y = x, y: x x =&amp;gt; (x, y: x y) I M = (x, y: x x) I M =&amp;gt; M = I.&lt;br /&gt;&lt;br /&gt;2.4.3. Построим замкнутые термы M0, M1..., такие, что Mi # Mj для всех i != j:&lt;br /&gt;Mi = x0, x1,..., xi: xi;&lt;br /&gt;Mi = Mj, i &amp;gt; j =&amp;gt; Mi y1 ... yj = Mj y1 ... yj =&amp;gt; Mk = I, k = i - j;&lt;br /&gt;Mk = I =&amp;gt; Mk I ...(k-1)... I = I I ...(k-1)... I =&amp;gt; x: I = I =&amp;gt; (x: I) M = I M =&amp;gt; I = M.&lt;br /&gt;&lt;br /&gt;2.4.4. Покажем, что аппликация не ассоциативна, точнее x (y z) # (x y) z:&lt;br /&gt;x (y z) = (x y) z =&amp;gt; x, y, z: x (y z) = x, y, z: (x y) z =&amp;gt; K (I M) I = (K I) M I =&amp;gt; M = I.&lt;br /&gt;&lt;br /&gt;2.4.5 (К. Е. Шаап). Пусть X = S I. Покажем, что X X X X = X (X (X X)), и вообще для всех n имеет место X^n X = X X~n:&lt;br /&gt;n = 1: X X = X X;&lt;br /&gt;n = 2: X X X = S I X X = I X (X X) = X (X X).&lt;br /&gt;n &amp;gt; 2: X^n X = X X~n =&amp;gt;&lt;br /&gt;X X~n+1 = X X~n X = (X^n X) X = X (X^n-1 X) X =&lt;br /&gt;= S I (X^n-1 X) X = X ((X^n-1 X) X) = X (X X~n-1 X) =&lt;br /&gt;= X (X X~n) = X (X^n X) = X^n+1 X.&lt;br /&gt;&lt;br /&gt;2.4.6. Покажем, что не существует такого F, чтобы для любых M и N выполнялось бы F (M N) = M:&lt;br /&gt;I I = (x: I) I =&amp;gt; F (I I) = F ((x: I) I) =&amp;gt; I = x: I =&amp;gt; I M = (x: I) M =&amp;gt; M = I.&lt;br /&gt;&lt;br /&gt;2.4.7. Покажем, что существует такой M, что для любого N выполняется M N = M M, применив теорему о неподвижной точке:&lt;br /&gt;M x = M M =&amp;gt; M = x: M M =&amp;gt; M = (f, x: f f) M;&lt;br /&gt;M = W W, W = w: (f, x: f f) (w w);&lt;br /&gt;M N = (f, x: f f) M N = (x: M M) N = M M.&lt;br /&gt;&lt;br /&gt;2.4.8. Бла-бла-бла про одновременную подстановку.&lt;br /&gt;В пизду эту болтологическую муть.&lt;br /&gt;&lt;br /&gt;2.4.9. Покажем, что (x, y: M) N = y: (x: M) N:&lt;br /&gt;(x, y: M) N = (y: M)[x := N] = y: M[x := N] = y: (x: M) N.&lt;br /&gt;&lt;br /&gt;2.4.10. Используем теорему о неподвижной точке, чтобы построить терм M, такой, что&lt;br /&gt;(i) M = M S:&lt;br /&gt;M = (f: f S) M, M = W W, W = w: (f: f S) (w w);&lt;br /&gt;M = (f: f S) M = M S;&lt;br /&gt;(ii) M I S S = M S:&lt;br /&gt;M = (f, s: f I s s) M, M = W W, W = w: (f, s: f I s s) (w w);&lt;br /&gt;M S = (f, s: f I s s) M S = M I S S.&lt;br /&gt;&lt;br /&gt;2.4.11. Построим F, такой, что F I = x и F K = y, вспомнив упражнение 2.4.2 (i):&lt;br /&gt;если F = f: f I M N, тогда&lt;br /&gt;F K = K I M N = N =&amp;gt; N = y;&lt;br /&gt;F I = I I M N = M N =&amp;gt; M = z: x;&lt;br /&gt;cтало быть, F = f: f I (z: x) y.&lt;br /&gt;&lt;br /&gt;2.4.12 (Якопини). Пусть w3 = x: x x x и W3 = w3 w3. Покажем, что&lt;br /&gt;(i) I # w3, иначе I (x, y: I) = w3 (x, y: I) =&amp;gt; x, y: I = I =&amp;gt; (x, y: I) I M = I I M =&amp;gt; I = M;&lt;br /&gt;(ii) I # W3, иначе I = W3 =&amp;gt; I w3 = W3 w3 =&amp;gt; w3 = W3 w3, а если заметить&lt;br /&gt;W3 = w3 w3 w3 = W3 w3, то W3 = I =&amp;gt; I = I w3, что возвращает нас к пункту (i).&lt;br /&gt;&lt;br /&gt;2.4.13. Покажем, что для любой абстракции M имеет место равенство x: M x = M:&lt;br /&gt;M = y: N;&lt;br /&gt;x: M x = x: (y: N) x = x: N[y := x] = y: N = M.&lt;br /&gt;&lt;br /&gt;2.4.14. Пусть M = x: x (y: y y) (y: y y). Покажем, что M I-разрешим:&lt;br /&gt;M (x, y: x I (y I)) = I I (I I) = I.&lt;br /&gt;&lt;br /&gt;2.4.15 (почему-то есть только в оригинале, Минц не перевел). Suppose a symbol of the lambda calculus alphabet is always 0.5 cm wide. Let us write down a lambda term with length less than 20 cm having a normal form with length at least 10^(10^10) lightyear. The speed of light is c = 3 * 10^10 cm/sec.&lt;br /&gt;The length of a Church numeral in cm is about the natural number it represents, so it is more than enough to write a term that reduces to the Church numeral for the number 2^(2^(2^(2^(2^2)))). The exponential function for Church numerals is just application, so the term can be (x: x x x x x x) (f, x: f (f x)) which is, in turn, much shorter than requested.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=172247" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:168459</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/168459.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=168459"/>
    <title>Проект P2Pinet</title>
    <published>2014-02-08T10:00:34Z</published>
    <updated>2014-02-09T02:08:01Z</updated>
    <category term="lambda calculus"/>
    <category term="elementary mathematics"/>
    <category term="ideas"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">В связи с идеей &lt;a href="http://codedot.dreamwidth.org/168278.html"&gt;распределенных сетей взаимодействия&lt;/a&gt;, хотелось бы вернуться к проекту компилятора &lt;code&gt;inet&lt;/code&gt;, который используется в &lt;a href="https://github.com/euromake/mlc"&gt;MLC&lt;/a&gt; для механизма read-back. Приложение было &lt;a href="https://github.com/euromake/inet"&gt;реализовано&lt;/a&gt; уже после подготовки &lt;a href="http://codedot.dreamwidth.org/141368.html"&gt;формального описания проекта&lt;/a&gt; и строго следуя проектной документации; имели место лишь мелкие уточнения и исправления по ходу работы.&lt;br /&gt;&lt;br /&gt;Как модифицировать компилятор &lt;code&gt;inet&lt;/code&gt;, чтобы получить вместо него распределенную универсальную P2P-сеть взаимодействия? Обозначим гипотетическую распределенную версию &lt;code&gt;inet&lt;/code&gt; как &lt;code&gt;p2pinet&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;P2P-сеть всегда основана на дублировании информации для случаев, когда одна из нод отключается от сети. Заметим, что стэк активных пар, используемый в проекте &lt;code&gt;inet&lt;/code&gt;, - это исчерпывающая информация о редуцируемой сети взаимодействия. Чаще всего (псевдо-)активная пара состоит не из двух агентов, а из агента и (псевдо-)агента &lt;code&gt;wire&lt;/code&gt;, который служит для разыменования. Последнее в случае P2P-сети служило бы простым запросом на дублирование информации.&lt;br /&gt;&lt;br /&gt;В &lt;code&gt;p2pinet&lt;/code&gt; активные пары технически нигде не хранятся в явном виде, и ноды могут даже не знать, активна ли данная конкретная связь между одним идентификатором (портом) и каким-то другим в сети. Обмен информацией и (неявное) создание новых активных пар произходило бы в такой сети с помощью операции разыменования, а собственно применение правил взаимодействия - локально на нодах ввиду нескольких причин.&lt;br /&gt;&lt;br /&gt;Во-первых, правила могут быть приватными для группы нод. Во-вторых, правила могут иметь побочные действия, как в проекте &lt;code&gt;inet&lt;/code&gt;. В-третьих, набор правил может быть бесконечным и очень сложным. Наконец, одно из правил может быть вычислительно затратно, например вычисление n-ного простого числа.&lt;br /&gt; &lt;br /&gt;Следует подчеркнуть, что сами по себе сети взаимодействия неэффективны с вычислительной точки зрения - существующие процессоры справляются с вычислительными задачами несравнимо лучше. Но оптимальная редукция, вопреки названию, вообще не рассматривает вопрос о том, как проводить собственно редукцию и не предлагает никаких решений на этот счет. Вместо этого, она предлагает стратегию для объединения работы (optimal sharing). Последнее и можно было бы позаимствовать от систем взаимодействия для оптимального разделения работы и данных между частями распределенной вычислительной системы.&lt;br /&gt;&lt;br /&gt;Конкретно эту задачу сети взаимодействия и решают на качественном уровне. Они служат своеобразным планировщиком задач, который уже, в свою очередь, управляет остальными процессорами как устройствами, чем-то похожим на OpenCL образом. Однако, в отличие от OpenCL (который тоже, в принципе, может быть использован в распределенной сети), сети взаимодействия позволили бы делать и само планирование децентрализованным, при этом избегая лишних обмена данных и дублирования работы.&lt;br /&gt;&lt;br /&gt;&lt;a name="cutid1"&gt;&lt;/a&gt;Следующая схема иллюстрирует, как может быть представлена активная пара в распределенной децентрализованной сети взаимодействия (уникальные адреса и множество соединений вместо единого стека активных пар в случае компилятора &lt;code&gt;inet&lt;/code&gt;):&lt;br /&gt;&lt;br /&gt;[{нода x} (доп. порты) = α&lt;sub&gt;1&lt;/sub&gt; - (гл. порт)] | {сеть} | [(гл. порт) - α&lt;sub&gt;2&lt;/sub&gt; = (доп. порты) {нода y}], где&lt;br /&gt;&lt;br /&gt;x может совпадать с y;&lt;br /&gt;агенты α&lt;sub&gt;i&lt;/sub&gt; могут (и должны) быть продублированы (некоторыми) другими нодами;&lt;br /&gt;все главные порты, которые не соединены с доп. портами должны быть доступны в сети с уникальным идентификатором;&lt;br /&gt;связь между двумя дополнительными портами может быть представлена с помощью псевдо-агента &lt;code&gt;wire&lt;/code&gt; из проекта &lt;code&gt;inet&lt;/code&gt;;&lt;br /&gt;деревья с корнем в α&lt;sub&gt;i&lt;/sub&gt; могут храниться локально вне сети пока сеть не редуцирует соответствующую активную пару.&lt;br /&gt;&lt;br /&gt;В качестве базовой технологии можно было использовать приближающийся стандарт &lt;a href="http://www.webrtc.org/"&gt;WebRTC&lt;/a&gt;, который уже, впрочем, работает в большинстве браузеров. Он был задумал для прямого видео/аудио-общения между пользователями без нагрузки на серверы, но также позволяет обмениваться произвольными данными между браузерами.&lt;br /&gt;&lt;br /&gt;По &lt;a href="http://codedot.dreamwidth.org/161576.html"&gt;астрономо-арифметическим соображениям&lt;/a&gt;, одного килобита на адрес хватает навсегда, а два килобита на уникальный идентификатор дают абсолютную гарантию отсутствия коллизий.&lt;br /&gt;&lt;br /&gt;Такие длины идентификаторов напоминают характерные длины ключей RSA. Кстати, последний имеет &lt;a href="http://en.wikipedia.org/wiki/Homomorphic_encryption#Unpadded_RSA"&gt;гомоморфизм относительно умножения&lt;/a&gt;, а потому мог бы быть использован для приватных вычислений на основе той же самой распределенной вычислительной сети.&lt;br /&gt;&lt;br /&gt;В принципе, сеть вообще могла бы функционировать редко или вовсе не взаимодействующими (под)сетями, идентификаторы агентов которых зашифрованы, к примеру, группами пользователей.&lt;br /&gt;&lt;br /&gt;Формально на роль системы взаимодействия, на основе которой бы могла работать сеть, годятся, по крайней мере, следующие три варианта:&lt;br /&gt;&lt;br /&gt;а) комбинаторы взаимодействия;&lt;br /&gt;б) &lt;a href="http://arxiv.org/abs/1304.2290"&gt;компактное представление λ-выражений&lt;/a&gt;;&lt;br /&gt;в) универсум.&lt;br /&gt;&lt;br /&gt;Последний предпочтительнее не только из-за неэффективности комбинаторов и функциональной чистоты λ-исчисления, но и из-за разных потребностей групп пользователей, а также возможности применить изоморфизм RSA-арифметику, используя, например, некоторые идентификаторы в качестве данных, что, в общем-то, логично, если учесть их сверх-избыточную длину.&lt;br /&gt;&lt;br /&gt;Понятно, что система взаимодействия может иметь бесконечные сигнатуру (множество типов агентов) и множество правил взаимодействия. С помощью простого дизъюнктного объединения всех возможных систем взаимодействия мы можем получить единую универсальную систему взаимодействия, чья сигнатура содержит все возможные типы агентов, а множество правил - все возможные взаимодействия.&lt;br /&gt;&lt;br /&gt;В обычной теории множеств это парадоксальная конструкция. Если ограничить множество систем взаимодействия только до тех, которые можно формализовать, то их становится счетное множество. А приняв во внимание астроно-арифметические соображения, то их вообще конечное множество с человеко-размерной длиной идентификаторов (килобит, в принципе, можно передать одним SMS).&lt;br /&gt;&lt;br /&gt;Остается неясным как именно должно происходить применение правил взаимодействия и редукция сети. В частности, непонятно, можно ли, а если можно - то как именно производить проверку работу сети. Связанный вопрос возникает по поводу дублирования работы отстающими нодами: как держать их число на оптимальном уровне. Похоже, что требуется какой-то компромисс между числом дублирующих нод для надежности сети и неоптимальностью суммарной работы.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=168459" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:164631</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/164631.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=164631"/>
    <title>Цветопередача с ошибками</title>
    <published>2013-06-29T08:31:24Z</published>
    <updated>2013-06-29T08:34:12Z</updated>
    <category term="ideas"/>
    <category term="elementary mathematics"/>
    <category term="humour"/>
    <dw:security>public</dw:security>
    <dw:reply-count>2</dw:reply-count>
    <content type="html">Кто может скорректировать шестнадцатеричное число?&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size: 512%; background-color: #000000;"&gt;&amp;nbsp;&lt;strong&gt;&lt;span style="color: #ff00ff;"&gt;A&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ff0000;"&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style="color: #ffffff;"&gt;0&lt;/span&gt;&amp;nbsp;&lt;span style="color: #00ff00;"&gt;B&lt;/span&gt;&lt;/strong&gt;&amp;nbsp;&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Задействуйте свои проверочные колбочки!&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=164631" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:163032</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/163032.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=163032"/>
    <title>Prime Number Natural Selection</title>
    <published>2013-06-22T06:33:25Z</published>
    <updated>2013-06-22T06:48:26Z</updated>
    <category term="elementary mathematics"/>
    <category term="favorites"/>
    <category term="talks"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;a href="http://www.cims.nyu.edu/~eve2/predprey.pdf"&gt;http://www.cims.nyu.edu/~eve2/predprey.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Prime number selection of cycles in a predator-prey model&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Eric Goles, Oliver Schulz, Mario Markus&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;The fact that some species of cicadas appear every 7, 13, or 17 years and that these periods are prime numbers has been regarded as a coincidence. We found a simple evolutionary predator-prey model that yields prime-periodic preys having cycles predominantly around the observed values. An evolutionary game on a spatial array leads to travelling waves reminiscent of those observed in excitable systems. The model marks an encounter of two seemingly unrelated disciplines: biology and number theory. A restriction to the latter, provides an evolutionary generator of arbitrarily large prime numbers.&lt;br /&gt;&lt;br /&gt;Via &lt;span style='white-space: nowrap;'&gt;&lt;a href='http://udod.livejournal.com/profile'&gt;&lt;img src='https://www.dreamwidth.org/img/external/lj-userinfo.gif' alt='[livejournal.com profile] ' style='vertical-align: text-bottom; border: 0; padding-right: 1px;' width='17' height='17'/&gt;&lt;/a&gt;&lt;a href='http://udod.livejournal.com/'&gt;&lt;b&gt;udod&lt;/b&gt;&lt;/a&gt;&lt;/span&gt;'s &lt;a href="http://udod.livejournal.com/249469.html"&gt;post&lt;/a&gt; and &lt;a href="http://en.wikipedia.org/wiki/Magicicada"&gt;Wikipedia&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=163032" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:162528</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/162528.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=162528"/>
    <title>Мой второй кот на Verilog</title>
    <published>2013-06-13T10:23:39Z</published>
    <updated>2013-06-18T11:16:21Z</updated>
    <category term="programming"/>
    <category term="ideas"/>
    <category term="elementary mathematics"/>
    <category term="lambda calculus"/>
    <category term="computers"/>
    <dw:security>public</dw:security>
    <dw:reply-count>7</dw:reply-count>
    <content type="html">&lt;div style="background: #ffffff; overflow:auto;width:auto;color:black;background:white;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;&lt;span style="color: #008000; font-weight: bold"&gt;module&lt;/span&gt; brain (clk, sensor, effect);
	&lt;span style="color: #008000; font-weight: bold"&gt;parameter&lt;/span&gt; nbit &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;12&lt;/span&gt;;
	&lt;span style="color: #008000; font-weight: bold"&gt;parameter&lt;/span&gt; size &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;2&lt;/span&gt; &lt;span style="color: #303030"&gt;**&lt;/span&gt; nbit;
 
	&lt;span style="color: #008000; font-weight: bold"&gt;input&lt;/span&gt; clk;
	&lt;span style="color: #008000; font-weight: bold"&gt;input&lt;/span&gt; [&lt;span style="color: #005080; font-weight: bold"&gt;7&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;] sensor;
	&lt;span style="color: #008000; font-weight: bold"&gt;output&lt;/span&gt; [&lt;span style="color: #005080; font-weight: bold"&gt;7&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;] effect;
 
	&lt;span style="color: #303090; font-weight: bold"&gt;reg&lt;/span&gt; sig [&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;size &lt;span style="color: #303030"&gt;-&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt;];
	&lt;span style="color: #303090; font-weight: bold"&gt;reg&lt;/span&gt; trace [&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;size &lt;span style="color: #303030"&gt;-&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt;];
	&lt;span style="color: #303090; font-weight: bold"&gt;reg&lt;/span&gt; [nbit &lt;span style="color: #303030"&gt;-&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;] ram [&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;size &lt;span style="color: #303030"&gt;-&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt;];
 
	&lt;span style="color: #008000; font-weight: bold"&gt;assign&lt;/span&gt; effect[&lt;span style="color: #005080; font-weight: bold"&gt;3&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;] &lt;span style="color: #303030"&gt;=&lt;/span&gt; {sig[&lt;span style="color: #005080; font-weight: bold"&gt;3&lt;/span&gt;], sig[&lt;span style="color: #005080; font-weight: bold"&gt;2&lt;/span&gt;], sig[&lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt;], sig[&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;]};
	&lt;span style="color: #008000; font-weight: bold"&gt;assign&lt;/span&gt; effect[&lt;span style="color: #005080; font-weight: bold"&gt;7&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;&lt;span style="color: #005080; font-weight: bold"&gt;4&lt;/span&gt;] &lt;span style="color: #303030"&gt;=&lt;/span&gt; {sig[&lt;span style="color: #005080; font-weight: bold"&gt;7&lt;/span&gt;], sig[&lt;span style="color: #005080; font-weight: bold"&gt;6&lt;/span&gt;], sig[&lt;span style="color: #005080; font-weight: bold"&gt;5&lt;/span&gt;], sig[&lt;span style="color: #005080; font-weight: bold"&gt;4&lt;/span&gt;]};
 
	&lt;span style="color: #008000; font-weight: bold"&gt;integer&lt;/span&gt; i;
 
	&lt;span style="color: #008000; font-weight: bold"&gt;initial&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;for&lt;/span&gt; (i &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;; i &lt;span style="color: #303030"&gt;&amp;lt;&lt;/span&gt; size; i &lt;span style="color: #303030"&gt;=&lt;/span&gt; i &lt;span style="color: #303030"&gt;+&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt;) &lt;span style="color: #008000; font-weight: bold"&gt;begin&lt;/span&gt;
		trace[i] &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;;
		sig[i] &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;;
		ram[i] &lt;span style="color: #303030"&gt;=&lt;/span&gt; i;
	&lt;span style="color: #008000; font-weight: bold"&gt;end&lt;/span&gt;
 
	&lt;span style="color: #008000; font-weight: bold"&gt;always&lt;/span&gt; @(&lt;span style="color: #008000; font-weight: bold"&gt;posedge&lt;/span&gt; clk) &lt;span style="color: #008000; font-weight: bold"&gt;begin&lt;/span&gt;
		&lt;span style="color: #008000; font-weight: bold"&gt;for&lt;/span&gt; (i &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;; i &lt;span style="color: #303030"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;8&lt;/span&gt;; i &lt;span style="color: #303030"&gt;=&lt;/span&gt; i &lt;span style="color: #303030"&gt;+&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt;)
			sig[ram[i]] &lt;span style="color: #303030"&gt;&amp;lt;=&lt;/span&gt; sensor[i];
 
		&lt;span style="color: #008000; font-weight: bold"&gt;for&lt;/span&gt; (i &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;; i &lt;span style="color: #303030"&gt;&amp;lt;&lt;/span&gt; size; i &lt;span style="color: #303030"&gt;=&lt;/span&gt; i &lt;span style="color: #303030"&gt;+&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt;) &lt;span style="color: #008000; font-weight: bold"&gt;begin&lt;/span&gt;
			&lt;span style="color: #008000; font-weight: bold"&gt;case&lt;/span&gt; ({trace[i], sig[ram[i]]})
			&lt;span style="color: #005080; font-weight: bold"&gt;2&amp;#39;b00&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt; ram[i] &lt;span style="color: #303030"&gt;&amp;lt;=&lt;/span&gt; ram[i] &lt;span style="color: #303030"&gt;+&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt;;
			&lt;span style="color: #005080; font-weight: bold"&gt;2&amp;#39;b01&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt; sig[i] &lt;span style="color: #303030"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt;;
			&lt;span style="color: #005080; font-weight: bold"&gt;2&amp;#39;b10&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt; sig[i] &lt;span style="color: #303030"&gt;&amp;lt;=&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;;
			&lt;span style="color: #005080; font-weight: bold"&gt;2&amp;#39;b11&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt; ram[i] &lt;span style="color: #303030"&gt;&amp;lt;=&lt;/span&gt; ram[i] &lt;span style="color: #303030"&gt;-&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt;;
			&lt;span style="color: #008000; font-weight: bold"&gt;endcase&lt;/span&gt;
 
			trace[i] &lt;span style="color: #303030"&gt;&amp;lt;=&lt;/span&gt; sig[ram[i]];
		&lt;span style="color: #008000; font-weight: bold"&gt;end&lt;/span&gt;
	&lt;span style="color: #008000; font-weight: bold"&gt;end&lt;/span&gt;
&lt;span style="color: #008000; font-weight: bold"&gt;endmodule&lt;/span&gt;
 
&lt;span style="color: #003060; font-weight: bold"&gt;`ifdef&lt;/span&gt; &lt;span style="color: #003060; font-weight: bold"&gt;SIM&lt;/span&gt;
&lt;span style="color: #008000; font-weight: bold"&gt;module&lt;/span&gt; sim;
	&lt;span style="color: #303090; font-weight: bold"&gt;reg&lt;/span&gt; clk &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;;
	&lt;span style="color: #303090; font-weight: bold"&gt;reg&lt;/span&gt; [&lt;span style="color: #005080; font-weight: bold"&gt;7&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;] key;
	&lt;span style="color: #303090; font-weight: bold"&gt;wire&lt;/span&gt; [&lt;span style="color: #005080; font-weight: bold"&gt;7&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;] led;
 
	brain core(clk, key, led);
 
	&lt;span style="color: #008000; font-weight: bold"&gt;integer&lt;/span&gt; c;
 
	&lt;span style="color: #008000; font-weight: bold"&gt;always&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;begin&lt;/span&gt;
		c &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #F00000; background-color: #F0A0A0"&gt;$&lt;/span&gt;fgetc(&lt;span style="color: #005080; font-weight: bold"&gt;32&amp;#39;h8000&lt;/span&gt;_0000);
		&lt;span style="color: #008000; font-weight: bold"&gt;if&lt;/span&gt; (&lt;span style="color: #303030"&gt;-&lt;/span&gt;&lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt; &lt;span style="color: #303030"&gt;==&lt;/span&gt; c)
			&lt;span style="color: #007020"&gt;$finish&lt;/span&gt;;
 
		key &lt;span style="color: #303030"&gt;=&lt;/span&gt; c[&lt;span style="color: #005080; font-weight: bold"&gt;7&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;];
		#&lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt; clk &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #303030"&gt;~&lt;/span&gt;clk;
		#&lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt; clk &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #303030"&gt;~&lt;/span&gt;clk;
		&lt;span style="color: #F00000; background-color: #F0A0A0"&gt;$&lt;/span&gt;displayb(led);
	&lt;span style="color: #008000; font-weight: bold"&gt;end&lt;/span&gt;
&lt;span style="color: #008000; font-weight: bold"&gt;endmodule&lt;/span&gt;
&lt;span style="color: #003060; font-weight: bold"&gt;`endif&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=162528" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:162238</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/162238.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=162238"/>
    <title>Мой первый кот на Verilog</title>
    <published>2013-06-10T15:41:10Z</published>
    <updated>2013-06-10T21:11:42Z</updated>
    <category term="programming"/>
    <category term="elementary mathematics"/>
    <category term="lambda calculus"/>
    <category term="computers"/>
    <dw:security>public</dw:security>
    <dw:reply-count>2</dw:reply-count>
    <content type="html">&lt;div style="background: #ffffff; overflow:auto;width:auto;color:black;background:white;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;&lt;span style="color: #507090"&gt;`define OPZ 4&amp;#39;b1111&lt;/span&gt;
&lt;span style="color: #507090"&gt;`define OPA 4&amp;#39;b0001&lt;/span&gt;
&lt;span style="color: #507090"&gt;`define OPL 4&amp;#39;b0010&lt;/span&gt;
&lt;span style="color: #507090"&gt;`define OPN 4&amp;#39;b0100&lt;/span&gt;
&lt;span style="color: #507090"&gt;`define OPS 4&amp;#39;b1000&lt;/span&gt;

&lt;span style="color: #507090"&gt;`define BIT 15&lt;/span&gt;
&lt;span style="color: #507090"&gt;`define SIZE (2 ** `BIT)&lt;/span&gt;

&lt;span style="color: #008000; font-weight: bold"&gt;module&lt;/span&gt; ram0 (clk, op, led);
	&lt;span style="color: #008000; font-weight: bold"&gt;input&lt;/span&gt; clk;
	&lt;span style="color: #008000; font-weight: bold"&gt;input&lt;/span&gt; [&lt;span style="color: #005080; font-weight: bold"&gt;3&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;] op;
	&lt;span style="color: #008000; font-weight: bold"&gt;output&lt;/span&gt; [&lt;span style="color: #005080; font-weight: bold"&gt;7&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;] led;

	&lt;span style="color: #303090; font-weight: bold"&gt;reg&lt;/span&gt; [&lt;span style="color: #003060; font-weight: bold"&gt;`BIT&lt;/span&gt; &lt;span style="color: #303030"&gt;-&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;] ram [&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;&lt;span style="color: #003060; font-weight: bold"&gt;`SIZE&lt;/span&gt; &lt;span style="color: #303030"&gt;-&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt;];
	&lt;span style="color: #303090; font-weight: bold"&gt;reg&lt;/span&gt; [&lt;span style="color: #003060; font-weight: bold"&gt;`BIT&lt;/span&gt; &lt;span style="color: #303030"&gt;-&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;] n, z;

	&lt;span style="color: #008000; font-weight: bold"&gt;assign&lt;/span&gt; led &lt;span style="color: #303030"&gt;=&lt;/span&gt; z[&lt;span style="color: #005080; font-weight: bold"&gt;7&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;];

	&lt;span style="color: #008000; font-weight: bold"&gt;always&lt;/span&gt; @(&lt;span style="color: #008000; font-weight: bold"&gt;posedge&lt;/span&gt; clk) &lt;span style="color: #008000; font-weight: bold"&gt;begin&lt;/span&gt;
		&lt;span style="color: #008000; font-weight: bold"&gt;case&lt;/span&gt; (op)
		&lt;span style="color: #003060; font-weight: bold"&gt;`OPZ&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt; z &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;;
		&lt;span style="color: #003060; font-weight: bold"&gt;`OPA&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt; z &lt;span style="color: #303030"&gt;=&lt;/span&gt; z &lt;span style="color: #303030"&gt;+&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt;;
		&lt;span style="color: #003060; font-weight: bold"&gt;`OPL&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt; z &lt;span style="color: #303030"&gt;=&lt;/span&gt; ram[z];
		&lt;span style="color: #003060; font-weight: bold"&gt;`OPN&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt; n &lt;span style="color: #303030"&gt;=&lt;/span&gt; z;
		&lt;span style="color: #003060; font-weight: bold"&gt;`OPS&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt; ram[n] &lt;span style="color: #303030"&gt;=&lt;/span&gt; z;
		&lt;span style="color: #008000; font-weight: bold"&gt;endcase&lt;/span&gt;
	&lt;span style="color: #008000; font-weight: bold"&gt;end&lt;/span&gt;
&lt;span style="color: #008000; font-weight: bold"&gt;endmodule&lt;/span&gt;

&lt;span style="color: #003060; font-weight: bold"&gt;`ifdef&lt;/span&gt; &lt;span style="color: #003060; font-weight: bold"&gt;SIM&lt;/span&gt;
&lt;span style="color: #008000; font-weight: bold"&gt;module&lt;/span&gt; sim;
	&lt;span style="color: #303090; font-weight: bold"&gt;reg&lt;/span&gt; clk &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;;
	&lt;span style="color: #303090; font-weight: bold"&gt;reg&lt;/span&gt; [&lt;span style="color: #005080; font-weight: bold"&gt;3&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;] op;
	&lt;span style="color: #303090; font-weight: bold"&gt;wire&lt;/span&gt; [&lt;span style="color: #005080; font-weight: bold"&gt;7&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt;&lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;] led;

	ram0 core(clk, op, led);

	&lt;span style="color: #008000; font-weight: bold"&gt;integer&lt;/span&gt; ch;

	&lt;span style="color: #008000; font-weight: bold"&gt;always&lt;/span&gt; &lt;span style="color: #008000; font-weight: bold"&gt;begin&lt;/span&gt;
		ch &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #F00000; background-color: #F0A0A0"&gt;$&lt;/span&gt;fgetc(&lt;span style="color: #005080; font-weight: bold"&gt;32&amp;#39;h8000&lt;/span&gt;_0000);
		&lt;span style="color: #008000; font-weight: bold"&gt;case&lt;/span&gt; (ch)
		&lt;span style="background-color: #fff0f0"&gt;&amp;quot;z&amp;quot;&lt;/span&gt;, &lt;span style="background-color: #fff0f0"&gt;&amp;quot;Z&amp;quot;&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt; op &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #003060; font-weight: bold"&gt;`OPZ&lt;/span&gt;;
		&lt;span style="background-color: #fff0f0"&gt;&amp;quot;a&amp;quot;&lt;/span&gt;, &lt;span style="background-color: #fff0f0"&gt;&amp;quot;A&amp;quot;&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt; op &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #003060; font-weight: bold"&gt;`OPA&lt;/span&gt;;
		&lt;span style="background-color: #fff0f0"&gt;&amp;quot;l&amp;quot;&lt;/span&gt;, &lt;span style="background-color: #fff0f0"&gt;&amp;quot;L&amp;quot;&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt; op &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #003060; font-weight: bold"&gt;`OPL&lt;/span&gt;;
		&lt;span style="background-color: #fff0f0"&gt;&amp;quot;n&amp;quot;&lt;/span&gt;, &lt;span style="background-color: #fff0f0"&gt;&amp;quot;N&amp;quot;&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt; op &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #003060; font-weight: bold"&gt;`OPN&lt;/span&gt;;
		&lt;span style="background-color: #fff0f0"&gt;&amp;quot;s&amp;quot;&lt;/span&gt;, &lt;span style="background-color: #fff0f0"&gt;&amp;quot;S&amp;quot;&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt; op &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #003060; font-weight: bold"&gt;`OPS&lt;/span&gt;;
		&lt;span style="color: #303030"&gt;-&lt;/span&gt;&lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt; &lt;span style="color: #007020"&gt;$finish&lt;/span&gt;;
		&lt;span style="color: #008000; font-weight: bold"&gt;default&lt;/span&gt;&lt;span style="color: #303030"&gt;:&lt;/span&gt; op &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #005080; font-weight: bold"&gt;0&lt;/span&gt;;
		&lt;span style="color: #008000; font-weight: bold"&gt;endcase&lt;/span&gt;

		&lt;span style="color: #008000; font-weight: bold"&gt;if&lt;/span&gt; (op) &lt;span style="color: #008000; font-weight: bold"&gt;begin&lt;/span&gt;
			#&lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt; clk &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #303030"&gt;~&lt;/span&gt;clk;
			#&lt;span style="color: #005080; font-weight: bold"&gt;1&lt;/span&gt; clk &lt;span style="color: #303030"&gt;=&lt;/span&gt; &lt;span style="color: #303030"&gt;~&lt;/span&gt;clk;
			&lt;span style="color: #F00000; background-color: #F0A0A0"&gt;$&lt;/span&gt;displayb(led);
		&lt;span style="color: #008000; font-weight: bold"&gt;end&lt;/span&gt;
	&lt;span style="color: #008000; font-weight: bold"&gt;end&lt;/span&gt;
&lt;span style="color: #008000; font-weight: bold"&gt;endmodule&lt;/span&gt;
&lt;span style="color: #003060; font-weight: bold"&gt;`endif&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=162238" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:161576</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/161576.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=161576"/>
    <title>Tor-подобная килобитная RAM0</title>
    <published>2013-05-29T13:05:08Z</published>
    <updated>2013-05-30T17:39:11Z</updated>
    <category term="computers"/>
    <category term="lambda calculus"/>
    <category term="elementary mathematics"/>
    <category term="ideas"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Килобит можно передать одним сообщением по SMS.&lt;br /&gt;&lt;br /&gt;При этом его достаточно, чтобы адресовать любую точку пространства-времени с точностью до &lt;a href="http://codedot.dreamwidth.org/150758.html"&gt;планковских единиц измерения&lt;/a&gt; на протяжении 10&lt;sup&gt;27&lt;/sup&gt; лет, что в 10&lt;sup&gt;17&lt;/sup&gt; раз больше, чем уже прошло после момента Большого взрыва. Для сравнения, полкилобита адресуют около ста микросекунд. Для данной оценки использовался гиперобъем гиперконуса, который примерно равен гиперобъему гиперкуба со стороной, равной высоте этого гиперконуса.&lt;br /&gt;&lt;br /&gt;Таким образом, килобитных адресов хватает на любую мыслимую на сегодняшний день научную фантастику: с невероятным запасом покрываются нужды однозначной адресации для реализованных и доведенных до совершенства квантового компьютера, телепортации, машины времени и кротовых нор вместе взятых.&lt;br /&gt;&lt;br /&gt;Теперь предположим, что у нас есть хэш-функция F, похожая на &lt;a href="https://ru.wikipedia.org/wiki/SHA-2"&gt;SHA-2&lt;/a&gt;, но с размером хэша и размером блока ровно в один килобит (вместо обычных 256 бит и 512-битных блоков), и способ адресации, подобный &lt;a href="http://en.wikipedia.org/wiki/.onion"&gt;.onion-доменам для анонимных сервисов в сети Tor&lt;/a&gt;, причем каждый сервис хранит ровно одну килобитную ячейку памяти.&lt;br /&gt;&lt;br /&gt;Интересно было бы рассмотреть распределенную &lt;a href="http://codedot.dreamwidth.org/160095.html"&gt;RAM0&lt;/a&gt;-подобную вычислительную сеть с семантикой команд, измененной следующим образом (предполагается отсутствие коллизиций на килобитных блоках):&lt;br /&gt;&lt;br /&gt;&lt;div style="background: #ffffff; overflow:auto;width:auto;color:black;background:white;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;&lt;span style="color: #507090"&gt;#define A	z = F(z)&lt;/span&gt;
&lt;span style="color: #507090"&gt;#define L	z = recvkbit(z)&lt;/span&gt;
&lt;span style="color: #507090"&gt;#define N	n = z&lt;/span&gt;
&lt;span style="color: #507090"&gt;#define S	sendkbit(n, z)&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=161576" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:160328</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/160328.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=160328"/>
    <title>Компиляция из MLC в RAM0</title>
    <published>2013-05-15T13:29:27Z</published>
    <updated>2013-05-15T18:16:54Z</updated>
    <category term="programming"/>
    <category term="ideas"/>
    <category term="elementary mathematics"/>
    <category term="lambda calculus"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Программы на языке MLC (Macro Lambda Calculus) - пример &lt;a href="https://raw.github.com/euromake/mlc/master/example.mlc"&gt;доступен&lt;/a&gt; на GitHub - имеют следующий вид:&lt;br /&gt;&lt;br /&gt;N1 = M1;&lt;br /&gt;...&lt;br /&gt;Nm = Mm;&lt;br /&gt;&lt;br /&gt;M0.&lt;br /&gt;&lt;br /&gt;Выражение M0 может содержать произвольное число вхождений имен макросов N1, ... , Nm, а также свободных переменных - обозначим их x1, ... , xn. Комбинатор M, нормальную форму которого мы фактически ищем, получается из программы следующим образом:&lt;br /&gt;&lt;br /&gt;M = x1, ... , xn: (N1, ... , Nm: M0) M1 ... Mm.&lt;br /&gt;&lt;br /&gt;Комбинатор M, в свою очередь, представим в &lt;a href="http://arxiv.org/abs/1304.1309"&gt;исчислении взаимодействия&lt;/a&gt;, воспользовавшись направленной версией &lt;a href="http://arxiv.org/abs/1304.2290"&gt;компактной кодировки λ-выражений&lt;/a&gt;. Заметим, что конфигурация &amp;lt;x | Γ(M, x)&amp;gt;, как можно видеть из определения, содержит только редексы по левому разыменованию. Следовательно, чтобы инициализировать нашу &lt;a href="http://codedot.dreamwidth.org/157570.html"&gt;систему слепой перезаписи графов&lt;/a&gt;, достаточно все уравнения конфигурации положить в стек, соответствующий левому разыменованию.&lt;br /&gt;&lt;br /&gt;Полученную в результате структуру памяти можно восстановить некоторой последовательностью I инструкций Z, A, L, N и S машины &lt;a href="http://codedot.dreamwidth.org/160095.html"&gt;RAM0&lt;/a&gt;. Основной цикл работы нашей системы слепой перезаписи графов, реализующей редукцию сетей взаимодействия, также может быть представлен некоторой последовательностью R инструкций Z, A, L, N и S, которая не зависит от вычисляемого выражения. Таким образом, исходный код на языке MLC может быть скомпилирован в следующую программу RAM0:&lt;br /&gt;&lt;br /&gt;I;&lt;br /&gt;loop: R;&lt;br /&gt;goto loop;&lt;br /&gt;&lt;br /&gt;Данная программа не содержит инструкцию C для условного перехода. Такие детали, как стратегия вычисления, остановка машины, обработка дна стеков и механизм "read-back" во время стягивания конфигурации, были здесь намеренно опущены, чтобы не нагромождать и без того уже объемное изложение.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=160328" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:160095</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/160095.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=160095"/>
    <title>RAM0</title>
    <published>2013-05-14T11:04:06Z</published>
    <updated>2013-05-14T12:49:08Z</updated>
    <category term="lambda calculus"/>
    <category term="elementary mathematics"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Модель &lt;a href="http://en.wikipedia.org/wiki/Counter-machine_model#1980:_Sch.C3.B6nhage.27s_0-parameter_model_RAM0"&gt;RAM0&lt;/a&gt; (Schönhage's zero-parameter successor RAM model) - это компьютер с двумя регистрами (z и n) и шестью командами (Z, A, L, N, S и C), который эквивалентен &lt;a href="http://en.wikipedia.org/wiki/Pointer_machine#Sch.C3.B6nhage.27s_Storage_Modification_Machine_.28SMM.29_model"&gt;SMM&lt;/a&gt; (Schönhage's storage modification machine model).&lt;br /&gt;&lt;br /&gt;Как следует из названия, команды RAM0, за исключением, пожалуй, условного перехода, не имеют параметров. Одна из ее особенностей - алгоритм умножения n-битных чисел за линейное время O(n). Этот, на первый взгляд, парадоксальный результат говорит о том, что механизм RAM сам по себе обладает определенной вычислительной мощностью.&lt;br /&gt;&lt;br /&gt;На языке Си команды RAM0 выглядят следующим образом:&lt;br /&gt;&lt;br /&gt;&lt;div style="background: #ffffff; overflow:auto;width:auto;color:black;background:white;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;&lt;span style="color: #507090"&gt;#ifndef _RAM0_H&lt;/span&gt;
&lt;span style="color: #507090"&gt;#define _RAM0_H&lt;/span&gt;

&lt;span style="color: #507090"&gt;#include &amp;lt;stdlib.h&amp;gt;&lt;/span&gt;

&lt;span style="color: #008000; font-weight: bold"&gt;extern&lt;/span&gt; &lt;span style="color: #303090; font-weight: bold"&gt;void&lt;/span&gt; &lt;span style="color: #303030"&gt;**&lt;/span&gt;n, &lt;span style="color: #303030"&gt;**&lt;/span&gt;z;

&lt;span style="color: #507090"&gt;#define Z	z = NULL&lt;/span&gt;
&lt;span style="color: #507090"&gt;#define A	++z&lt;/span&gt;
&lt;span style="color: #507090"&gt;#define L	z = *z&lt;/span&gt;
&lt;span style="color: #507090"&gt;#define N	n = z&lt;/span&gt;
&lt;span style="color: #507090"&gt;#define S	*n = z&lt;/span&gt;

&lt;span style="color: #507090"&gt;#define C(label) \&lt;/span&gt;
&lt;span style="color: #507090"&gt;	do { \&lt;/span&gt;
&lt;span style="color: #507090"&gt;		if (z) \&lt;/span&gt;
&lt;span style="color: #507090"&gt;			goto label; \&lt;/span&gt;
&lt;span style="color: #507090"&gt;	} while (0)&lt;/span&gt;

&lt;span style="color: #507090"&gt;#endif&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Ниже пример программы:&lt;br /&gt;&lt;br /&gt;&lt;div style="background: #ffffff; overflow:auto;width:auto;color:black;background:white;border:solid gray;border-width:.1em .1em .1em .8em;padding:.2em .6em;"&gt;&lt;pre style="margin: 0; line-height: 125%"&gt;&lt;span style="color: #507090"&gt;#include &amp;quot;ram0.h&amp;quot;&lt;/span&gt;

&lt;span style="color: #303090; font-weight: bold"&gt;void&lt;/span&gt; &lt;span style="color: #303030"&gt;**&lt;/span&gt;n, &lt;span style="color: #303030"&gt;**&lt;/span&gt;z;

main()
{
	&lt;span style="color: #907000; font-weight: bold"&gt;loop:&lt;/span&gt; Z; A; L; N; S; C(loop);

	&lt;span style="color: #008000; font-weight: bold"&gt;return&lt;/span&gt; &lt;span style="color: #303030"&gt;!&lt;/span&gt;z;
}
&lt;/pre&gt;&lt;/div&gt;&lt;br /&gt;Интересно, что система сохраняет Тьюринг-полноту, даже если заменить условный переход безусловным. Эта задача рассматривается в статьях &lt;a href="http://arxiv.org/abs/1204.3372"&gt;"Blind graph rewriting systems"&lt;/a&gt; и &lt;a href="http://arxiv.org/abs/1304.2290"&gt;"A compact encoding for λ-terms in interaction calculus"&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=160095" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:159655</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/159655.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=159655"/>
    <title>Schönhage’s SMM with only one instruction</title>
    <published>2013-05-07T03:37:54Z</published>
    <updated>2013-05-07T08:50:39Z</updated>
    <category term="elementary mathematics"/>
    <category term="lambda calculus"/>
    <category term="talks"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;a href="http://mathoverflow.net/questions/129923"&gt;http://mathoverflow.net/questions/129923&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;It is possible to implement λ-calculus in Schönhage's &lt;a href="http://en.wikipedia.org/wiki/Pointer_machine#Sch.C3.B6nhage.27s_Storage_Modification_Machine_.28SMM.29_model"&gt;storage modification machine&lt;/a&gt; using an infinite set of nodes and one single program consisted exclusively of (about hundred) instructions &lt;b&gt;set w to v&lt;/b&gt; (with different w and v) using a compact directed &lt;a href="http://arxiv.org/abs/1304.2290"&gt;encoding&lt;/a&gt; for λ-terms closely related to directed interaction combinators by Lafont, and four infinite spaghetti stacks based on linked nodes to perform interaction and indirection rules on configurations.&lt;br /&gt;&lt;br /&gt;Is it possible to preserve Turing-completeness of the SMM model while restricting its instruction set to only a single instruction &lt;b&gt;set w to v&lt;/b&gt; (with constant w and v) during the whole computation process?&lt;br /&gt;&lt;br /&gt;I would be very grateful for any references regarding this question.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=159655" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
  <entry>
    <id>tag:dreamwidth.org,2013-01-03:1881992:159338</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/159338.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=159338"/>
    <title>Schönhage's Storage Modification Machine</title>
    <published>2013-05-06T15:31:57Z</published>
    <updated>2013-05-06T15:31:57Z</updated>
    <category term="elementary mathematics"/>
    <category term="lambda calculus"/>
    <category term="talks"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">In theoretical computer science a pointer machine is an "atomistic" abstract computational machine model akin to the Random access machine.&lt;br /&gt;&lt;br /&gt;Depending on the type, a pointer machine may be called a linking automaton, a KU-machine, an SMM, an atomistic LISP machine, a tree-pointer machine, etc. (cf Ben-Amram 1995). At least three major varieties exist in the literature—the Kolmogorov-Uspenskii model (KUM, KU-machine), the Knuth linking automaton, and the &lt;a href="http://en.wikipedia.org/wiki/Pointer_machine#Sch.C3.B6nhage.27s_Storage_Modification_Machine_.28SMM.29_model"&gt;Schönhage Storage Modification Machine&lt;/a&gt; model (SMM). The SMM seems to be the most common.&lt;br /&gt;&lt;br /&gt;This should definitely help to answer two questions on MathOverflow, regarding &lt;a href="http://mathoverflow.net/questions/124604/turing-complete-primitive-blind-automata"&gt;Turing-complete primitive blind automata&lt;/a&gt; and &lt;a href="http://mathoverflow.net/questions/94250/universality-of-blind-graph-rewriting"&gt;Universality of blind graph rewriting&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=159338" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
</feed>
