如何在Coq中重写高阶术语?

时间:2018-08-24 10:38:25

标签: coq lambda-calculus coqide coq-plugin

该问题基于我的问题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微积分工具?

1 个答案:

答案 0 :(得分:1)

没有工具可以执行您直接描述的Coq代码的文本转换。在不了解GrammaticalFramework的情况下,我想您最好的选择是编写一个Sed脚本,该脚本查找应用于参数的is的出现,并用IS用等价的表达式替换这些出现。

  

第二种“ IS”形式可以更容易地转换为is-boss谓词,这就是为什么我努力做到这一点。

我认为,如果您使用Sed脚本,则可以直接轻松地转到IS_BOSS表单,而无需使用IS