Many problems can be solved by iteration by multiple participants (processors, servers, routers etc.). Previous mathematical models for such asynchronous iterations assume a single function being iterated by a fixed set of participants. We will call such iterations static since the system's configuration does not change. However in several real-world examples, such as inter-domain routing, both the function being iterated and the set of participants change frequently while the system continues to function. In this paper we extend Uresin & Dubois's work on static iterations to develop a model for this class of "dynamic" or "always on" asynchronous iterations. We explore what it means for such an iteration to be implemented correctly, and then prove two different conditions on the set of iterated functions that guarantee the full asynchronous iteration satisfies this new definition of correctness. These results have been formalised in Agda and the resulting library is publicly available.
翻译:许多问题可以通过多个参与者(处理器、服务器、路由器等)的迭代来解决。 以往的同步迭代等数学模型假定一个单一功能由一组固定参与者迭代。 我们将称这种迭代为静态, 因为系统配置没有改变 。 但是, 在多个真实世界的例子中, 比如跨域路由, 函数正在迭代, 参与者集在系统继续运行时经常变化 。 在本文中, 我们扩展了 Uresin & Dubois 关于静态迭代的作品, 以开发一个“ 动态” 或“ 循环运行” 等类的“ 动态” 迭代代模式 。 我们探索这种迭代意味着什么, 要正确执行, 然后证明迭代函数组上两种不同的条件, 保证完全的互换连接能满足这个新的正确性定义 。 这些结果已经在阿格达正式化, 由此产生的图书馆可以公开查阅 。