<?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-08-21T04:58:01Z</updated>
  <dw:journal username="codedot" type="personal"/>
  <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="lambda calculus"/>
    <category term="ideas"/>
    <category term="elementary mathematics"/>
    <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="lambda calculus"/>
    <category term="elementary mathematics"/>
    <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:182004</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/182004.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=182004"/>
    <title>Обратное свойство ромба</title>
    <published>2018-05-31T13:13:07Z</published>
    <updated>2018-06-03T09:40:36Z</updated>
    <category term="lambda calculus"/>
    <category term="ideas"/>
    <dw:security>public</dw:security>
    <dw:reply-count>1</dw:reply-count>
    <content type="html">Я тут задумался об &lt;a href="https://en.wikipedia.org/wiki/Reversible_computing"&gt;обратимых вычислениях&lt;/a&gt;. Как они могли бы выглядеть в &lt;a href="https://en.wikipedia.org/wiki/Interaction_nets"&gt;сетях взаимодействия&lt;/a&gt;? Но прежде всего, в каком смысле надо понимать обратимость, если отношение редукции обладает свойством ромба? И что из этого будет следовать?&lt;br /&gt;&lt;br /&gt;Пока у меня ничего толком не устоялось, рабочее определение &lt;i&gt;обратимой системы взаимодействия&lt;/i&gt; такое: 1) для любой подсети Ν должно быть не более одной активной пары α&amp;gt;&amp;lt;β, которая редуцируется к N, и 2) если две подсети M и N - результы взаимодействия активных пар α&amp;gt;&amp;lt;β и γ&amp;gt;&amp;lt;δ, соответственно, то M и N не пересекаются. Речь идет лишь о подсетях и активных парах, так как об обратимости конфигураций говорить нельзя, когда в сети больше одной активной пары. Не уверен, что это исчерпывающий список условий, но уже их достаточно, чтобы заметить пару-тройку следствий.&lt;br /&gt;&lt;br /&gt;Одно из следствий такого определения немедленно накладывает ограничения на правила взаимодействия. В частности, правая часть каждого правила обязана быть связной сетью. Доказательство от противного: строим простой контрпример с двумя одинаковыми активными парами, взаимодействие которых приводит к двум неразличимым сверткам для каждой активной пары, нарушая условие (2). Также потребуется асимметрия правой части правила для α&amp;gt;&amp;lt;β, если α и β различны. Продолжу думать в этом направлении позже, хотя уже предчувствую трудности с интерпретацией обратимых систем взаимодействия в исчислении взаимодействия. Например, придется как-то выкручиваться с разыменованием (indirection), применение которого сугубо неоднозначно.&lt;br /&gt;&lt;br /&gt;Но самое интересное свойство обратимых систем взаимодействия - это, наверное, обратное свойство ромба. Получается, если такие системы вообще существуют, они одновременно будут обладать и прямым (strong confluence), и обратным (strong upward confluence) свойствами ромба. Это, конечно, мне напомнило об упражнении 3.5.11 (vii) у Барендрегта. Когда я бегло проходил по упражнениям к нескольким главам три года назад, мне не удалось быстро его решить. Было &lt;a href="https://codedot.dreamwidth.org/172360.html"&gt;обидно&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Задача была показать, что для термов (λx.b x (b c)) c и (λx.x x) (b c), принадлежащих Плоткину, не существует общей β-экспансии, хотя они оба редуцируются к b c (b c). Эти два терма служат контрпримером для "обратного свойства Черча-Россера" β-редукции. Сегодня я решил поискать, как именно выводить противоречие из существования их общей β-экспансии, и нашел &lt;a href="https://pdfs.semanticscholar.org/c179/a23274c06aaca4865a2e3c66a45612c38aa0.pdf"&gt;"An Easy Expansion Exercise"&lt;/a&gt; (Vincent van Oostrom). Там предлагается использовать теорему о стандартизации. Правда, я не очень понял, как ограничиться материалом конкретно третьей главы.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Update.&lt;/b&gt; In a reversible interaction system (RIS), the right-hand side (RHS) of each rule needs to include at least one agent, that is RHS cannot be a wiring: RHS of α[x, x]&amp;gt;&amp;lt;β is ambiguous, α[x]&amp;gt;&amp;lt;α[x] violates condition (1) in the definition of RIS, and more than one wire make a disconnected net, violating condition (2). As a consequence, in the interaction calculus, each name in an interaction rule needs to have at least one of its two occurrences in a term that is not a name; otherwise we have a disconnected subnet in its RHS. Now it is easy to see strong upward confluence in RIS.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=182004" 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="programming"/>
    <category term="lambda calculus"/>
    <category term="elementary mathematics"/>
    <category term="howtos"/>
    <category term="talks"/>
    <category term="ideas"/>
    <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="programming"/>
    <category term="lambda calculus"/>
    <category term="elementary mathematics"/>
    <category term="howtos"/>
    <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="howtos"/>
    <category term="elementary mathematics"/>
    <category term="lambda calculus"/>
    <category term="programming"/>
    <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:180422</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/180422.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=180422"/>
    <title>arXiv:1710.07516 [cs.LO]</title>
    <published>2017-10-23T02:13:22Z</published>
    <updated>2017-10-23T02:13:22Z</updated>
    <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/1710.07516"&gt;https://arxiv.org/abs/1710.07516&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;An impure solution to the problem of matching fans&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;We present an algorithm to solve the problem of matching fans in interaction net implementations of optimal reduction for the pure untyped lambda calculus without use of any additional agent types. The algorithm relies upon a specific interaction nets reduction strategy and involves side effects in one of interaction rules.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=180422" 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:177489</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/177489.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=177489"/>
    <title>How to Fix a Bug with Git</title>
    <published>2017-03-06T21:54:08Z</published>
    <updated>2017-03-07T01:16:33Z</updated>
    <category term="lambda calculus"/>
    <category term="programming"/>
    <category term="howtos"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">I am currently working on implementing &lt;a href="http://codedot.dreamwidth.org/177163.html"&gt;needed reduction&lt;/a&gt; for interaction nets. To do that, I first needed to refactor a lot of somewhat ugly fast-written code in &lt;code&gt;&lt;a href="https://github.com/codedot/inet-lib"&gt;inet-lib&lt;/a&gt;&lt;/code&gt;. At some point, I changed retrieving an element from an array to &lt;code&gt;.pop()&lt;/code&gt; from &lt;code&gt;.shift()&lt;/code&gt;, just because in JavaScript the former happens to be a cheaper operation than the latter.&lt;br /&gt;&lt;br /&gt;Many commits later, I decided to play with the program a little bit and compare performance between &lt;code&gt;.shift()&lt;/code&gt;ing and &lt;code&gt;.pop()&lt;/code&gt;ing. Boom! The program appeared to be broken. Even worse, invariance of the queue that is represented by that array with respect to the order in which it is processed is the whole point of interaction nets, namely the property of strong confluence also known as the one-step diamond property. I thought I fucked up hard.&lt;br /&gt;&lt;br /&gt;First, I took a look at &lt;code&gt;git-blame(1)&lt;/code&gt; for the line of code that calls &lt;code&gt;.pop()&lt;/code&gt;, and found the &lt;a href="https://github.com/codedot/inet-lib/commit/28b3bf847a0f930ab72c1f73425dab56cf831390"&gt;corresponding commit&lt;/a&gt;. Then, I marked its parent commit as good with &lt;code&gt;git-bisect(1)&lt;/code&gt;. After a few steps, &lt;code&gt;git-bisect(1)&lt;/code&gt; found the &lt;a href="https://github.com/codedot/inet-lib/commit/9242e8b901586b0b235bdda73f572122feb4a6c6"&gt;first bad commit&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Evidently, the problem had something to do with indirection applied by non-deterministic extension of interaction nets. And it did not take more than a couple of minutes to figure out a &lt;a href="https://github.com/codedot/inet-lib/commit/bad862c485c178564ef0da7dd74366b9a3479f3b"&gt;simple one-liner fix&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Overall, it took less than half an hour from finding a bug to fixing it which I first thought would take hours if not days. To me, it looks like yet another evidence that the idea of &lt;code&gt;git-bisect(1)&lt;/code&gt; is totally genius. So, thanks again, Linus!&lt;br /&gt;&lt;br /&gt;P. S. Free advice: when making commits, it is always useful to keep in mind 1) a possible need to &lt;code&gt;git-grep(1)&lt;/code&gt; some lines of code later, and 2) almost inevitable need to deal with bugs which is a lot easier when commits are suitable for &lt;code&gt;git-bisect(1)&lt;/code&gt;.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=177489" 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:177163</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/177163.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=177163"/>
    <title>arXiv:1702.06092 [cs.LO]</title>
    <published>2017-02-21T04:27:37Z</published>
    <updated>2017-02-21T04:27:37Z</updated>
    <category term="lambda calculus"/>
    <category term="ideas"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;a href="https://arxiv.org/abs/1702.06092"&gt;https://arxiv.org/abs/1702.06092&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Parallel needed reduction for pure interaction nets&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Reducing interaction nets without any specific strategy benefits from constant time per step. On the other hand, a canonical reduction step for weak reduction to interface normal form is linear by depth of terms. In this paper, we refine the weak interaction calculus to reveal the actual cost of its reduction. As a result, we obtain a notion of needed reduction that can be implemented in constant time per step without allowing any free ports and without sacrificing parallelism.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=177163" 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:176816</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/176816.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=176816"/>
    <title>Logic Lounge with Dana S. Scott</title>
    <published>2016-12-29T08:44:06Z</published>
    <updated>2016-12-29T08:44:06Z</updated>
    <category term="favorites"/>
    <category term="talks"/>
    <category term="lambda calculus"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">
&lt;iframe width="560" height="315" src="https://www.youtube.com/embed/nhc94A829qI" frameborder="0" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;
&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=176816" 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:176369</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/176369.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=176369"/>
    <title>Token-passing Optimal Reduction with Embedded Read-back</title>
    <published>2016-09-11T07:01:14Z</published>
    <updated>2016-09-11T07:02:15Z</updated>
    <category term="lambda calculus"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;a href="http://dx.doi.org/10.4204/EPTCS.225.7"&gt;http://dx.doi.org/10.4204/EPTCS.225.7&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Token-passing Optimal Reduction with Embedded Read-back&lt;/b&gt;&lt;br /&gt;&lt;i&gt;Anton Salikhmetov&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;We introduce a new interaction net implementation of optimal reduction for the pure untyped lambda calculus. Unlike others, our implementation allows to reach normal form regardless of the interaction net reduction strategy using the approach of so-called token-passing nets and a non-deterministic extension for interaction nets. Another new feature is the read-back mechanism implemented without leaving the formalism of interaction nets.&lt;/blockquote&gt;&lt;br /&gt;In Andrea Corradini and Hans Zantema: &lt;a href="http://dx.doi.org/10.4204/EPTCS.225"&gt;Proceedings 9th International Workshop on Computing with Terms and Graphs&lt;/a&gt; (TERMGRAPH 2016), Eindhoven, The Netherlands, April 8, 2016, &lt;a href="http://about.eptcs.org/"&gt;Electronic Proceedings in Theoretical Computer Science&lt;/a&gt; 225, pp. 45–54. &lt;br /&gt;Published: 10th September 2016.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=176369" 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:175648</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/175648.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=175648"/>
    <title>Еще одно введение в веревочковедение</title>
    <published>2016-05-25T13:09:57Z</published>
    <updated>2017-04-04T20:17:41Z</updated>
    <category term="lambda calculus"/>
    <category term="ideas"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;i&gt;После конференции &lt;a href="http://www.win.tue.nl/~hzantema/tg.html"&gt;TERMGRAPH&lt;/a&gt; в Эйндховене понял, что хорошо было бы иметь под рукой готовое быстрое введение одновременно в сети взаимодействия и исчисление взаимодействия. Вот что получилось из этой идеи.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;Сети взаимодействия (interaction nets) - это структуры, подобные графам, состоящие из &lt;i&gt;агентов&lt;/i&gt; (agents) и дуг. Агент типа α&lt;br /&gt;&lt;img src="https://pbs.twimg.com/media/CjQ22bvWYAEI-XB.jpg"&gt;&lt;br /&gt;имеет арность ar(α) &amp;ge; 0. Если ar(α) = n, то агент α имеет n &lt;i&gt;дополнительных портов&lt;/i&gt; (auxiliary ports) x&lt;sub&gt;1&lt;/sub&gt;,..., x&lt;sub&gt;n&lt;/sub&gt; в дополнение к его &lt;i&gt;главному порту&lt;/i&gt; (principle port) x&lt;sub&gt;0&lt;/sub&gt;. Все типы агентов принадлежат множеству Σ, называемому &lt;i&gt;сигнатурой&lt;/i&gt; (signature). К любому порту можно присоединить не более одной дуги. Порты, которые не соединены ни одной дугой, называются &lt;i&gt;свободными&lt;/i&gt; (free ports). Совокупность всех свободных портов в сети называется ее &lt;i&gt;интерфейсом&lt;/i&gt;. &lt;i&gt;Разводка&lt;/i&gt; (wiring) ω&lt;br /&gt;&lt;img src="https://pbs.twimg.com/media/CjQ22a0XEAISAQf.jpg"&gt;&lt;br /&gt;состоит исключительно из дуг. Индуктивно определяемые &lt;i&gt;деревья&lt;/i&gt; (trees)&lt;br /&gt;&lt;img src="https://pbs.twimg.com/media/CjQ22c8WYAA2qKh.jpg"&gt;&lt;br /&gt;соответствуют &lt;i&gt;термам&lt;/i&gt; t &lt;code&gt;::=&lt;/code&gt; α(t&lt;sub&gt;1&lt;/sub&gt;,..., t&lt;sub&gt;n&lt;/sub&gt;) | x в исчислении взаимодействия (interaction calculus), где x называется &lt;i&gt;именем&lt;/i&gt; (name).&lt;br /&gt;&lt;br /&gt;С помощью разводок и деревьев любая сеть может быть представлена следующим образом:&lt;br /&gt;&lt;img src="https://pbs.twimg.com/media/CjQ22fJW0AIb0SY.jpg"&gt;&lt;br /&gt;что в исчислении взаимодействия будет соответствовать &lt;i&gt;конфигурации&lt;/i&gt; (configuration)&lt;br /&gt;&amp;lt;t&lt;sub&gt;1&lt;/sub&gt;,..., t&lt;sub&gt;m&lt;/sub&gt; | v&lt;sub&gt;1&lt;/sub&gt; = w&lt;sub&gt;1&lt;/sub&gt;,..., v&lt;sub&gt;n&lt;/sub&gt; = w&lt;sub&gt;n&lt;/sub&gt;&amp;gt;,&lt;br /&gt;где t&lt;sub&gt;i&lt;/sub&gt;, v&lt;sub&gt;i&lt;/sub&gt;, w&lt;sub&gt;i&lt;/sub&gt; - некоторые термы. Последовательность t&lt;sub&gt;1&lt;/sub&gt;,..., t&lt;sub&gt;m&lt;/sub&gt; называется &lt;i&gt;интерфейсом&lt;/i&gt; (interface), остальное же представляет собой мультимножество &lt;i&gt;уравнений&lt;/i&gt; (equations). Разводка ω транслируется в выбор имен, и каждое имя обязано иметь ровно два вхождения в конфигурации.&lt;br /&gt;&lt;br /&gt;Как и в λ-исчислении, в исчислении взаимодействия естественным образом определяются понятия α-конверсии и подстановки (substitution). Оба вхождения любого имени могут быть заменены на новое имя, если оно не участвует в данной конфигурации. Если терм t имеет ровно одно вхождение имени x, то &lt;i&gt;подстановка&lt;/i&gt; t[x := u] определяется как результат замены имени x в терме t некоторым термом u.&lt;br /&gt;&lt;br /&gt;Когда два агента соединены своими главными портами, они формируют &lt;i&gt;активную пару&lt;/i&gt; (active pair). Для активных пар можно ввести &lt;i&gt;правила взаимодействия&lt;/i&gt; (interaction rules), которые описывают, как активная пара будет заменена во время редукции сети взаимодействия. Графически любое правило взаимодействия можно преставить следующим образом:&lt;br /&gt;&lt;img src="https://pbs.twimg.com/media/CjQ48X2WUAA5Dwd.jpg"&gt;&lt;br /&gt;где α, β &amp;isin; Σ, а сеть N представлена с помощью разводок и деревьев в виде, пригодном для исчисления взаимодействия: в нотации Lafont это соответствует&lt;br /&gt;a[v&lt;sub&gt;1&lt;/sub&gt;,..., v&lt;sub&gt;m&lt;/sub&gt;] &amp;gt;&amp;lt; β[w&lt;sub&gt;1&lt;/sub&gt;,..., w&lt;sub&gt;n&lt;/sub&gt;].&lt;br /&gt;Говорят, что сеть без активных пар находится в &lt;i&gt;нормальной форме&lt;/i&gt; (normal form). Сигнатура и множество правил взаимодействия вместе задают &lt;i&gt;систему взаимодействия&lt;/i&gt; (interaction system).&lt;br /&gt;&lt;br /&gt;Теперь рассмотрим пример для введенных конструкций, в котором участвуют часто использующиеся агенты ε и δ. В нотации Lafont правила взаимодействия для удаляющего (erasing) агента ε&lt;br /&gt;&lt;img src="https://pbs.twimg.com/media/CjQ48XxWkAEFXBN.jpg"&gt;&lt;br /&gt;записываются как ε &amp;gt;&amp;lt; α[ε,..., ε], а правила для дублирующего (duplicating) агента δ&lt;br /&gt;&lt;img src="https://pbs.twimg.com/media/CjQ48X4WgAAHrIW.jpg"&gt;&lt;br /&gt;выглядят следующим образом:&lt;br /&gt;δ[α(x&lt;sub&gt;1&lt;/sub&gt;,..., x&lt;sub&gt;n&lt;/sub&gt;), α(y&lt;sub&gt;1&lt;/sub&gt;,..., y&lt;sub&gt;n&lt;/sub&gt;)] &amp;gt;&amp;lt; α[δ(x&lt;sub&gt;1&lt;/sub&gt;, y&lt;sub&gt;1&lt;/sub&gt;),..., δ(x&lt;sub&gt;n&lt;/sub&gt;, y&lt;sub&gt;n&lt;/sub&gt;)].&lt;br /&gt;В качестве примера сети, в которой участвуют правила удаления и дублирования, возьмем простую сеть которая не имеет нормальной формы и редуцируется к самой себе:&lt;br /&gt;&lt;img src="https://pbs.twimg.com/media/CjQ48X4W0AIVWmP.jpg"&gt;&lt;br /&gt;В исчислении взаимодействия такая сеть соответствует конфигурации&lt;br /&gt;&amp;lt;∅ | δ(ε, x) = γ(x, ε)&amp;gt; без интерфейса.&lt;br /&gt;&lt;br /&gt;Редукция для конфигураций определяется более подробно, чем для сетей. Если&lt;br /&gt;a[v&lt;sub&gt;1&lt;/sub&gt;,..., v&lt;sub&gt;m&lt;/sub&gt;] &amp;gt;&amp;lt; β[w&lt;sub&gt;1&lt;/sub&gt;,..., w&lt;sub&gt;n&lt;/sub&gt;], то следующая редукция:&lt;br /&gt;&amp;lt;... | α(t&lt;sub&gt;1&lt;/sub&gt;,..., t&lt;sub&gt;m&lt;/sub&gt;) = β(u&lt;sub&gt;1&lt;/sub&gt;,..., u&lt;sub&gt;n&lt;/sub&gt;), Δ&amp;gt; &amp;rarr; &amp;lt;... | t&lt;sub&gt;1&lt;/sub&gt; = v&lt;sub&gt;1&lt;/sub&gt;,..., t&lt;sub&gt;m&lt;/sub&gt; = v&lt;sub&gt;m&lt;/sub&gt;, u&lt;sub&gt;1&lt;/sub&gt; = w&lt;sub&gt;1&lt;/sub&gt;,..., u&lt;sub&gt;n&lt;/sub&gt; = w&lt;sub&gt;n&lt;/sub&gt;, Δ&amp;gt;&lt;br /&gt;называется &lt;i&gt;взаимодействием&lt;/i&gt; (interaction). Когда одно из уравнений имеет форму x = u, к конфигурации применимо &lt;i&gt;разыменование&lt;/i&gt; (indirection), в результате которого другое вхождение имени x в некотором терме t будет заменено на терм u:&lt;br /&gt;&amp;lt;...t... | x = u, Δ&amp;gt; &amp;rarr; &amp;lt;...t[x := u]... | Δ&amp;gt; или &amp;lt;... | x = u, t = w, Δ&amp;gt; &amp;rarr; &amp;lt;... | t[x := u] = w, Δ&amp;gt;.&lt;br /&gt;Уравнение t = x называется &lt;i&gt;тупиком&lt;/i&gt; (deadlock), если x имеет вхождение в t. Обычно рассматривают только сети, свободные от тупиков (deadlock-free). Вместе взаимодействие и разыменование задают отношение редукции на конфигурациях. Тот факт, что некоторая конфигурация c редуцируется к своей &lt;i&gt;нормальной форме&lt;/i&gt; c', где мультимножество уравнений пусто, обозначают через c &amp;darr; c'.&lt;br /&gt;&lt;br /&gt;Если вернуться к примеру незавершающейся редукции сети, то бесконечная редукционная цепочка, начинающаяся с соответствующей конфигурации выглядит следующим образом:&lt;br /&gt;&amp;lt;∅ | δ(ε, x) = γ(x, ε)&amp;gt; &amp;rarr;&lt;br /&gt;&amp;lt;∅ | ε = γ(x&lt;sub&gt;1&lt;/sub&gt;, x&lt;sub&gt;2&lt;/sub&gt;), x = γ(y&lt;sub&gt;1&lt;/sub&gt;, y&lt;sub&gt;2&lt;/sub&gt;), x = δ(x&lt;sub&gt;1&lt;/sub&gt;, y&lt;sub&gt;1&lt;/sub&gt;), ε = δ(x&lt;sub&gt;2&lt;/sub&gt;, y&lt;sub&gt;2&lt;/sub&gt;)&amp;gt; &amp;rarr;&lt;sup&gt;*&lt;/sup&gt;&lt;br /&gt;&amp;lt;∅ | x&lt;sub&gt;1&lt;/sub&gt; = ε, x&lt;sub&gt;2&lt;/sub&gt; = ε, x = γ(y&lt;sub&gt;1&lt;/sub&gt;, y&lt;sub&gt;2&lt;/sub&gt;), x = δ(x&lt;sub&gt;1&lt;/sub&gt;, y&lt;sub&gt;1&lt;/sub&gt;), x&lt;sub&gt;2&lt;/sub&gt; = ε, y&lt;sub&gt;2&lt;/sub&gt; = ε&amp;gt; &amp;rarr;&lt;sup&gt;*&lt;/sup&gt;&lt;br /&gt;&amp;lt;∅ | δ(ε, x) = γ(x, ε)&amp;gt; &amp;rarr; ...&lt;br /&gt;&lt;br /&gt;На нашем языке программирования, который подобен yacc(1)/lex(1) по структуре и лексически близок к LaTeX-нотации для исчисления взаимодействия, тот же самый пример можно записать следующим образом:&lt;br /&gt;&lt;pre&gt;\epsilon {
        console.log("epsilon &amp;gt;&amp;lt; delta");
} \delta[\epsilon, \epsilon];

\epsilon {
        console.log("epsilon &amp;gt;&amp;lt; gamma");
} \gamma[\epsilon, \epsilon];

\delta[\gamma(x, y), \gamma(v, w)] {
        console.log("delta &amp;gt;&amp;lt; gamma");
} \gamma[\delta(x, v), \delta(y, w)];

$$

\delta(\epsilon, x) = \gamma(x, \epsilon);&lt;/pre&gt;Отметим, что наш язык программирования позволяет записывать побочные действия в императивном стиле, таким образом давая возможность исполнять произвольный код, включая ввод-вывод, а также условные множественные правила для пар вида α&lt;sub&gt;i&lt;/sub&gt; &amp;gt;&amp;lt; β&lt;sub&gt;j&lt;/sub&gt; в зависимости от значений i и j, которые могут быть произвольными данными, привязанными к агентам.&lt;br /&gt;&lt;br /&gt;Наша реализация этого языка программирования не полагается какую-либо внешнюю сборку мусора, так как не занимается контролем связности сети. Данное свойство является следствием того, что интерфейс сети предполагается пустым, а сети задаются исключительно через мультимножества уравнений. Чтобы записать в нашем языке некоторую сеть с непустым интерфейсом, необходимо сначала ее модифицировать, например, добавив агенты с нулевой арностью ко всем свободным портам.&lt;br /&gt;&lt;br /&gt;Сигнатура и арности агентов соответствующей системы взаимодействия автоматически выводятся при компиляции исходного кода программы на основе правил взаимодействия и начальной конфигурации. Правила взаимодействия вместе с их побочными действиями компилируются заранее, до начала редукции сети, при этом компилятор формирует таблицу для быстрого O(1)-поиска правил, соответствующих активным парам, во время последующего исполнения программы. После этого начальная конфигурация добавляется в FIFO-очередь уравнений, которая затем обрабатывается, пока она не станет пуста.&lt;br /&gt;&lt;br /&gt;&lt;i&gt;P. S. Недавно адаптировал этот текст и дополнил им &lt;a href="https://en.wikipedia.org/wiki/Interaction_nets"&gt;статью на Википедии&lt;/a&gt;.&lt;/i&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=175648" 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:175579</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/175579.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=175579"/>
    <title>arXiv:1512.02995 [cs.LO]</title>
    <published>2015-12-10T01:20:27Z</published>
    <updated>2015-12-10T01:20:27Z</updated>
    <category term="lambda calculus"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;a href="http://arxiv.org/abs/1512.02995"&gt;http://arxiv.org/abs/1512.02995&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;A token-passing net implementation of optimal reduction with embedded read-back&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;In this paper, we introduce a new interaction net implementation of optimal reduction for pure untyped lambda calculus. Unlike others, our implementation allows to reach normal form regardless of interaction net reduction strategy using the approach of so-called token-passing nets. Another new feature is the read-back mechanism also implemented without leaving the formalism of interaction nets.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=175579" 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:174955</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/174955.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=174955"/>
    <title>Token-Passing Net Implementation of Optimal Reduction</title>
    <published>2015-10-20T09:26:44Z</published>
    <updated>2015-12-07T15:03:37Z</updated>
    <category term="lambda calculus"/>
    <category term="ideas"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">In the book &lt;a href="https://books.google.fi/books?id=Bod5HbPh-WwC&amp;amp;lpg=PA79&amp;amp;pg=PA41#v=onepage&amp;amp;q&amp;amp;f=false"&gt;"The Optimal Implementation of Functional Programming Languages"&lt;/a&gt; by Andrea Asperti and Stefano Guerrini the initial encoding of a λ-term M into an interaction net is a configuration &amp;lt;x | x = [M]&lt;sub&gt;0&lt;/sub&gt;&amp;gt; where translation [M]&lt;sub&gt;n&lt;/sub&gt; is inductively defined by the following rules:&lt;br /&gt;&lt;br /&gt;&lt;img src="https://pbs.twimg.com/media/CRvxwj0UcAAUNxV.png"&gt;&lt;br /&gt;&lt;br /&gt;The corresponding interaction rules consist of annihilation:&lt;br /&gt;&lt;br /&gt;&lt;img src="https://pbs.twimg.com/media/CRvxwj0UEAAq2WI.png"&gt;&lt;br /&gt;&lt;br /&gt;and propagation:&lt;br /&gt;&lt;br /&gt;&lt;img src="https://pbs.twimg.com/media/CRvxwkPVAAEhtmF.png"&gt;&lt;br /&gt;&lt;br /&gt;where i &amp;lt; j.&lt;br /&gt;&lt;br /&gt;The problem is that, in case of an arbitrary λK-term, reduction of such an interaction net has to avoid interactions in parts of the net that are disconnected from the interface; otherwise, it may not reach the normal form.&lt;br /&gt;&lt;br /&gt;It appears that in order to allow safe reduction without restricting evaluation strategy, it is sufficient to change initial encoding to &amp;lt;x | Eval(x) = [M]&lt;sub&gt;0&lt;/sub&gt;&amp;gt; and β-reduction to @&lt;sub&gt;i&lt;/sub&gt;[x, y]&amp;nbsp;&amp;gt;&amp;lt;&amp;nbsp;λ&lt;sub&gt;i&lt;/sub&gt;[Wait(z, Hold(z, x)), y], introducing additional agent types Eval, Wait, Hold, Call and Decide with the following interaction rules:&lt;br /&gt;&lt;br /&gt;Eval[λ&lt;sub&gt;i&lt;/sub&gt;(x, y)]&amp;nbsp;&amp;gt;&amp;lt;&amp;nbsp;λ&lt;sub&gt;i&lt;/sub&gt;[x, Eval(y)];&lt;br /&gt;Eval[δ&lt;sub&gt;i&lt;/sub&gt;(x, y)]&amp;nbsp;&amp;gt;&amp;lt;&amp;nbsp;δ&lt;sub&gt;i&lt;/sub&gt;[x, y];&lt;br /&gt;Eval[x]&amp;nbsp;&amp;gt;&amp;lt;&amp;nbsp;Wait[Eval(x), Call];&lt;br /&gt;Call&amp;nbsp;&amp;gt;&amp;lt;&amp;nbsp;Hold[x, Eval(x)];&lt;br /&gt;δ&lt;sub&gt;i&lt;/sub&gt;[Wait(x, Amb(y, Decide(z, v), v)), Wait(w, y)]&amp;nbsp;&amp;gt;&amp;lt;&amp;nbsp;Wait[δ&lt;sub&gt;i&lt;/sub&gt;(x, w), z];&lt;br /&gt;Call&amp;nbsp;&amp;gt;&amp;lt;&amp;nbsp;Decide[Call, ε];&lt;br /&gt;ε&amp;nbsp;&amp;gt;&amp;lt;&amp;nbsp;Decide[x, x];&lt;br /&gt;@&lt;sub&gt;i&lt;/sub&gt;[x, Wait(y, Hold(@&lt;sub&gt;i&lt;/sub&gt;(x, y), Wait(v, w)))]&amp;nbsp;&amp;gt;&amp;lt;&amp;nbsp;Wait[v, w];&lt;br /&gt;α[Wait(x, y)]&amp;nbsp;&amp;gt;&amp;lt;&amp;nbsp;Wait[α(x), y],&lt;br /&gt;&lt;br /&gt;where α is a bracket or a croissant, and Amb(x, y, z) is McCarthy's amb, x representing its second principle port.&lt;br /&gt;&lt;br /&gt;This token-passing net version of optimal reduction is implemented on the &lt;a href="https://github.com/codedot/lambda/tree/optimal"&gt;&lt;code&gt;optimal&lt;/code&gt; branch&lt;/a&gt; of the MLC repository.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=174955" 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:174820</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/174820.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=174820"/>
    <title>Copy-on-Demand in Interaction Nets</title>
    <published>2015-09-11T15:04:39Z</published>
    <updated>2015-09-11T15:05:14Z</updated>
    <category term="lambda calculus"/>
    <category term="ideas"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">Using McCarthy's amb agent:&lt;br /&gt;&lt;img src="https://pbs.twimg.com/media/COoWj9IWUAAV7k4.png"&gt;&lt;br /&gt;you can represent copy-on-demand in interaction nets:&lt;br /&gt;&lt;img src="https://pbs.twimg.com/media/COoWj9oW8AEEeja.png"&gt;&lt;br /&gt;with the following interaction rules:&lt;br /&gt;&lt;img src="https://pbs.twimg.com/media/COoWj8uW8AAQO-b.png"&gt;&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=174820" 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="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/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="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/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:171791</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/171791.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=171791"/>
    <title>Read-Back Embedded into Interaction System</title>
    <published>2015-04-17T05:02:43Z</published>
    <updated>2015-04-20T08:16:00Z</updated>
    <category term="lambda calculus"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">&lt;a href="http://arxiv.org/pdf/1304.2290v7.pdf"&gt;http://arxiv.org/pdf/1304.2290v7.pdf&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Interaction system of MLC implements token-passing nets and embeds read-back mechanism.&lt;br /&gt;&lt;br /&gt;Specifically, starting from initial configuration that encodes a λ-term&lt;br /&gt;&lt;br /&gt;&amp;lt;x | r&lt;sub&gt;[&amp;nbsp;]&lt;/sub&gt;(x) = y, Γ(M&lt;sup&gt;•&lt;/sup&gt;, y)&amp;gt;,&lt;br /&gt;&lt;br /&gt;the r(ead) agent will trigger duplication and application:&lt;br /&gt;&lt;br /&gt;s[c(x, r&lt;sub&gt;C[ ]&lt;/sub&gt;(y)), x] &amp;gt;&amp;lt; r&lt;sub&gt;C[ ]&lt;/sub&gt;[y]; &lt;br /&gt;@[λ(x, r&lt;sub&gt;C[ ]&lt;/sub&gt;(y)), x] &amp;gt;&amp;lt; r&lt;sub&gt;C[ ]&lt;/sub&gt;[y];&lt;br /&gt;&lt;br /&gt;and will construct normal form of the encoded λ-term:&lt;br /&gt;&lt;br /&gt;a&lt;sub&gt;M&lt;/sub&gt; &amp;gt;&amp;lt; λ[r&lt;sub&gt;M [&amp;nbsp;]&lt;/sub&gt;(x), x];&lt;br /&gt;a&lt;sub&gt;M&lt;/sub&gt; &amp;gt;&amp;lt; r&lt;sub&gt;C[&amp;nbsp;]&lt;/sub&gt;[a&lt;sub&gt;C[M]&lt;/sub&gt;];&lt;br /&gt;λ[a&lt;sub&gt;y&lt;/sub&gt;, r&lt;sub&gt;C[λy.[&amp;nbsp;]]&lt;/sub&gt;(x)] &amp;gt;&amp;lt; r&lt;sub&gt;C[&amp;nbsp;]&lt;/sub&gt;[x], where y ∈ Λ is a new variable.&lt;br /&gt;&lt;br /&gt;If normal form N of the λ-term exists, interaction results in configuration&lt;br /&gt;&lt;br /&gt;&amp;lt;a&lt;sub&gt;N&lt;/sub&gt; | ∅&amp;gt;&lt;br /&gt;&lt;br /&gt;which consists of only one a(tom) agent in its interface.&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=171791" 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:171556</id>
    <link rel="alternate" type="text/html" href="https://codedot.dreamwidth.org/171556.html"/>
    <link rel="self" type="text/xml" href="https://codedot.dreamwidth.org/data/atom/?itemid=171556"/>
    <title>Conservative Non-Deterministic Extension for Interaction Calculus</title>
    <published>2015-04-10T04:23:23Z</published>
    <updated>2015-04-10T04:23:23Z</updated>
    <category term="lambda calculus"/>
    <dw:security>public</dw:security>
    <dw:reply-count>0</dw:reply-count>
    <content type="html">We work in interaction calculus. However, we will need a special non-deterministic agent Amb. To represent this agent, we also extend interaction calculus, but in a more conservative fashion than it was previously suggested in &lt;a href="http://www.sciencedirect.com/science/article/pii/S1571066105803639"&gt;the original paper&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;Instead, we prepend the list of its auxiliary ports with its extra principal port and introduce conversion for configurations to represent non-deterministic behavior of Amb:&lt;br /&gt;&lt;br /&gt;&amp;lt;t&lt;sub&gt;1&lt;/sub&gt;,..., t&lt;sub&gt;n&lt;/sub&gt; | t = Amb(u, v, w), Δ&amp;gt; = &amp;lt;t&lt;sub&gt;1&lt;/sub&gt;,..., t&lt;sub&gt;n&lt;/sub&gt; | u = Amb(t, v, w), ∆&amp;gt;.&lt;br /&gt;&lt;br /&gt;We assume that any interaction system’s signature Σ is implicitly extended by Amb with Ar(Amb) = 3, while its set of rules is implicitly extended with&lt;br /&gt;&lt;br /&gt;α[x&lt;sub&gt;1&lt;/sub&gt;,..., x&lt;sub&gt;n&lt;/sub&gt;] &amp;gt;&amp;lt; Amb[y, α(x&lt;sub&gt;1&lt;/sub&gt;,..., x&lt;sub&gt;n&lt;/sub&gt;), y].&lt;br /&gt;&lt;br /&gt;&lt;img src="https://www.dreamwidth.org/tools/commentcount?user=codedot&amp;ditemid=171556" width="30" height="12" alt="comment count unavailable" style="vertical-align: middle;"/&gt; comments</content>
  </entry>
</feed>
