一阶公式中变量的高效重命名

5
编辑2: 得知de Bruijn指数可能更易于处理,我已经重新构建了公式的内部表示形式,使用混合de Bruijn表示法,这与Connor McBride的论文类似。这极大地简化了一些涉及α等价性的语法算法,但使其他算法更加复杂。无论如何,这意味着自由变量可以被标准化,并且绑定变量具有由其绑定距离表示的规范名称。这并不完全令人满意,但至少是一个更好的开始。

编辑1: 我意识到问题约束条件不足以保证变量的标准化。特别是,量词的迭代意味着必须首先将绑定器中的变量标准化。因此,可能没有逃避需要对每个抽象语法树进行多次遍历的解决方案。使用de Bruijn指数的建议通常是相当好的解决方案,但它不会轻易地给出标准化,而不破坏符号和其实用性。

原始内容:V 为自然数索引的无限变量集合,fv(φ) 表示公式 φ 的自由变量,bv(φ) 表示公式 φ 的绑定变量。我要解决的问题是:

设 φ 和 ψ 是一阶公式。找到替换 θ1 和 θ2 使得: (a) fv1(φ)), fv2(φ)), bv1(φ)) 和 bv2(ψ)) 互不相交; (b) fv1(φ)), fv2(φ)), bv1(φ)) 和 bv2(ψ)) 的并集同构于自然数的一个初始段; 以及 (c) 所有在θ1(φ)中的变量都小于所有在θ2(ψ)中的变量,而这些又都小于所有在fv1(ψ)) 中的变量,这些又都小于所有在fv2(ψ)) 中的变量。

困难在于公式中的绑定变量和自由变量集合不一定互不相交,量词可能会迭代,这意味着简单的替换会产生意外的变量捕获等问题。

一个低效的解决方案是:给定φ和ψ,首先将φ和ψ的自由变量标准化,使标准化后的项中所有自由变量均大于最大限制变量加上φ和ψ绑定运算符的数量,得到φ'和ψ'。然后从x0开始重命名φ'的绑定变量,再重命名ψ'的绑定变量,接着重命名φ'的自由变量,最后重命名ψ'的自由变量。我需要的是一个更有效的方法来满足问题的约束条件,即不需要重命名自由变量的初始标准化方法。高效地分离变量并不是问题,但附加约束条件让我苦恼。

“initial segment of ω”是什么意思?我所记得的唯一的ω(除了角度量等)与Cantor集相关。 - CapelliC
这些公式被表示为代数数据类型,这意味着我可以访问它们的抽象语法树。然而,这个问题比我的实现更一般化。理想情况下,解决方案只是对两个公式的抽象语法树进行操作或一组操作。 - emi
@chac:我编辑了这篇文章,使其更加清晰,将“...ω的初始段”改为“...自然数的初始段”,即如果集合中有n个变量,则第一个变量的索引为0,最后一个变量的索引为n-1。 - emi
2
你是否考虑过使用De Bruijn索引来表示变量? - n. m.
de Bruijn 指数在这种情况下并不适用,因为问题是使用变量的规范重命名将两个公式中的变量标准化。将绑定变量表示为其绑定符号之间的距离并不能真正解决这个问题。 - emi
显示剩余2条评论
1个回答

2

请务必使用 De Bruijn 索引。同时注意它们都是正数。在统一过程中,您可以使用负数。如果您想使用新的索引,请使用全局索引。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接