该问题基于我的问题https://cs.stackexchange.com/questions/96533/how-to-transform-lambda-function-to-multi-argument-lambda-function-and-how-to-re,该问题有两个功能和两个术语:
功能:
is: (e->t)->(e->t)
IS: e->(e->t)->t
条款:
(is(boss))(John): t
IS(John, boss): t
我的问题是:如何用仅包含is
的术语来重写涉及IS
的术语? Coq(或第三方工具)是否具有这样的重写功能? Coq是否具有检查重复书写条件是否相等的工具?
也许这种重写可以在Coq世界之外完成,也许还有其他仅具有语法操作的纯lambda微积分工具?
答案 0 :(得分:1)
没有工具可以执行您直接描述的Coq代码的文本转换。在不了解GrammaticalFramework的情况下,我想您最好的选择是编写一个Sed脚本,该脚本查找应用于参数的is
的出现,并用IS
用等价的表达式替换这些出现。
第二种“ IS”形式可以更容易地转换为is-boss谓词,这就是为什么我努力做到这一点。
我认为,如果您使用Sed脚本,则可以直接轻松地转到IS_BOSS
表单,而无需使用IS
。