首页> 外文会议>Annual ACM SIGPLAN-SIGACT symposium on principles of programming languages >Streaming Transducers for Algorithmic Verification of Single-pass List-processing Programs
【24h】

Streaming Transducers for Algorithmic Verification of Single-pass List-processing Programs

机译:流传感器,用于单遍列表处理程序的算法验证

获取原文

摘要

We introduce streaming data string transducers that map input data strings to output data strings in a single left-to-right pass in linear time. Data strings are (unbounded) sequences of data values, tagged with symbols from a finite set. over a potentially infinite data domain that supports only the operations of equality and ordering. The transducer uses a finite set of states, a finite set of variables ranging over the data domain, and a finite set of variables ranging over data strings. At every step, it can make decisions based on the next input symbol, updating its state, remembering the input data value in its data variables, and updating data-string variables by concatenating data-string variables and new symbols formed from data variables, while avoiding duplication. We establish that the problems of checking functional equivalence of two streaming transducers, and of checking whether a streaming transducer satisfies pre/post verification conditions specified by streaming acceptors over input/output data-strings, are in Pspace. We identify a class of imperative and a class of functional programs, manipulating lists of data items, which can be effectively translated to streaming data-string transducers. The imperative programs dynamically modify a singly-linked heap by changing next-pointers of heap-nodes and by adding new nodes. The main restriction specifies how the next-pointers can be used for traversal. We also identify an expressively equivalent fragment of functional programs that traverse a list using syntactically restricted recursive calls. Our results lead to algorithms for assertion checking and for checking functional equivalence of two programs, written possibly in different programming styles, for commonly used routines such as insert, delete, and reverse.
机译:我们介绍流数据串传感器,即映射输入数据字符串,以在线性时间中的单个左右传递中输出数据字符串。数据字符串是(无界面的)数据值序列,标记有来自有限集的符号。在潜在的无限数据域中,仅支持平等和排序的操作。换能器使用有限组状态,一个有限的变量,范围在数据域上,以及一组有限的变量,范围在数据字符串上。在每个步骤中,它可以基于下一个输入符号进行决策,更新其状态,记住其数据变量中的输入数据值,并通过串联数据字符串变量和由数据变量形成的新符号来更新数据字符串变量避免重复。我们确定检查两个流传感器的功能等价的问题,以及检查流传感器是否满足通过在输入/输出数据字符串上传输受体而指定的预/后验证条件,是pspace。我们确定一类命令和一类功能程序,操纵数据项列表,可以有效地转换为流数据串传输器。命令程序通过更改堆节点的下一个指针和添加新节点来动态修改单链式堆。主限制指定如何将下一个指针用于遍历。我们还确定使用语法限制递归调用遍历列表的功能性程序的表现相当的功能程序片段。我们的结果导致断言检查和检查两个程序的功能等效,可能在不同的编程样式中写入,用于常用的例程,如插入,删除和反向。

著录项

相似文献

  • 外文文献
  • 中文文献
  • 专利
获取原文

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号