{"id":351,"date":"2009-12-08T12:37:42","date_gmt":"2009-12-08T17:37:42","guid":{"rendered":"http:\/\/alarmingdevelopment.org\/?p=351"},"modified":"2009-12-08T12:37:42","modified_gmt":"2009-12-08T17:37:42","slug":"incompleteness","status":"publish","type":"post","link":"https:\/\/alarmingdevelopment.org\/?p=351","title":{"rendered":"Incompleteness"},"content":{"rendered":"<p>Bad news: co-action is incomplete. <!--more-->Simple example:<br \/>\n<code>x=true<br \/>\ny=true<br \/>\nif (x') {y'=false, z'=!z'}<br \/>\nif (y') {x'=false}<br \/>\n<\/code><br \/>\nThere is only one coherent execution order. It results in x&#8217;=false.<br \/>\nBut co-action will get stuck in the first conditional because of the cyclic reference to z. To get unstuck would require backtracking to explore alternative execution orders. That is scary.<\/p>\n<p>It seems the only way to make co-action complete is to make coherence deterministic. That is my strong preference anyway. Unfortunately I have also discovered that the &#8220;client\/server barriers&#8221; I proposed in the NEPLS talk do not work in all cases. I am thinking about alternatives, but so far they all require making static declarations in the code, which is a burden to the programmer. Perhaps it is better to just live with incompleteness for screwy code like the counterexample, which probably never actually occurs. Either way, it is not as pretty a picture as I was hoping for.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bad news: co-action is incomplete.<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[1],"tags":[],"class_list":["post-351","post","type-post","status-publish","format-standard","hentry","category-general"],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pfEnU-5F","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/351","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=351"}],"version-history":[{"count":3,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/351\/revisions"}],"predecessor-version":[{"id":354,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=\/wp\/v2\/posts\/351\/revisions\/354"}],"wp:attachment":[{"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=351"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=351"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/alarmingdevelopment.org\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=351"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}