“在有限字、确定控制、同步更新、寄存器初值为空以及终态表达式产生偏函数的标准假设下,copyless SST 与正则字符串传导表达能力等价。若允许复制、数据寄存器测试、非确定更新或无限字输出,…”
形式陈述 ​
正则字符串传导是偏函数
本批采用有限字、有限字母表、确定函数语义。于是该类与确定 2DFT及copyless SST表达能力等价。这里的“等价”指它们定义的偏函数集合相同,不保证翻译保持状态数,也不涵盖非确定关系、无限字、树输出或允许复制寄存器的 SST。
正则函数属于广义的函数型字符串传导,但严格包含一向函数型有理传导:在至少含两个符号的字母表上,一向转导器不能反转任意长输入,2DFT 与 copyless SST 可以。单字母表上的反转只是恒等函数,不能见证严格包含。术语“regular”描述函数类,不表示每对输入输出按同步卷积后一定构成正则语言。
直觉
正则函数允许用有限状态决定“输出哪些输入位置、按什么有限规则排列,以及在附近插入哪些常量”。2DFT 用多次访问输入实现次序,SST 用少量字符串片段实现次序,MSO 则直接描述输出位置图;三者提供操作、流式和逻辑三种视角。
模型能重排任意长字符串,却不能无限复制历史。固定 2DFT 的停机运行至多访问线性多个配置;固定 copyless SST 中每个旧片段不分叉;MSO 解释只有固定份输入位置副本。因此输出长度总被
线性大小不是充分条件。函数还必须由有限状态/有限逻辑描述其选择与排列;需要比较两个任意长计数、解析无界嵌套或根据素数长度选择输出,都不会仅因输出短就自动正则。
正则函数的定义域必为正则语言:在 2DFT 视角中,只保留成功停机的输入得到一个双向有限自动机,而双向有限自动机不超过普通正则语言。于是只在
例子与边界
考虑
Copyless SST 用两个寄存器 cab 时,三个时刻的估值为
故结果是 cab#bac。每个旧变量在更新中只出现一次。
2DFT 的对应算法先向右扫描并原样输出 cab,在右端输出 #,再向左回扫输出 bac。两种轨迹不同,却得到同一函数。MSO 解释则取输入位置的两份副本:第一份保持顺序,第二份反序,中间插入常量位置。
函数
推论与应用
正则函数对复合封闭,也对在正则定义域上的分段选择稳定。闭包可从 MSO 解释的复合得到,也可通过模型构造实现;但连续翻译和复合可能造成指数状态增长,因此实际工具会采用惰性状态生成或保持原始表示。
该统一类覆盖反转、固定次数复制、正则前后文重写、字段重排与有限格式转换。它为程序验证提供明确边界:copyless SST 像单遍程序,2DFT 像多遍只读程序,逻辑刻画则便于证明闭包和可定义性。
判断某个转换是否“正则”时,应给出模型或逻辑见证,而不是只观察若干样例。尤其要核对定义域、端标记、终态输出和空字;这些接口差一个固定字符,也会定义不同函数,尽管宏观算法看似相同。
逻辑刻画还提供反证路线:若一个候选函数需要无限多份位置副本、非正则定义域或超线性输出,就不可能来自固定 MSO 解释。这样的结构性障碍比“没有想到 SST 写法”更可靠,也能指出究竟是哪项能力越界。
参考资料
- Joost Engelfriet and Hendrik Jan Hoogeboom, “MSO Definable String Transductions and Two-Way Finite-State Transducers,” ACM Transactions on Computational Logic 2(2), 2001, main equivalence theorem in §4.
- Rajeev Alur and Pavol Černý, “Expressiveness of Streaming String Transducers,” FSTTCS 2010, LIPIcs 8, 2010, §§3–4.
- Emmanuel Filiot and Pierre-Alain Reynier, “Transducers, Logic and Algebra for Functions of Finite Words,” ACM SIGLOG News 3(3), 2016, §§4–5.