简单策略在COQ中起什么作用
我想知道简单策略在COQ中起什么作用,coq,Coq,我想知道simpl策略在COQ中是如何工作的。 假设以下引理: Parameter n:nat. Lemma test: S n + 0 = S (n+0). 现在,siml.策略产生 S (n + 0) = S (n + 0) 我的理解是,siml执行一系列 cbvβ、δ、物联网转换。 我试过了,但无法获得与siml相同的结果。基本问题是,在cbv增量扩展后,plus项继续扩展。如何将其反展开,即用扩展的定义重新替换plus名称? 或者,有人能告诉我如何通过手动执行更基本的策略来获得si
simpl
策略在COQ中是如何工作的。假设以下引理:
Parameter n:nat.
Lemma test: S n + 0 = S (n+0).
现在,siml.
策略产生
S (n + 0) = S (n + 0)
我的理解是,siml
执行一系列
cbvβ、δ、物联网转换。
我试过了,但无法获得与siml
相同的结果。基本问题是,在cbv增量
扩展后,plus
项继续扩展。如何将其反展开,即用扩展的定义重新替换plus
名称?
或者,有人能告诉我如何通过手动执行更基本的策略来获得siml
的效果吗 我认为仅使用cbv
不可能模拟siml
策略,因为确实cbv delta
不允许您选择要替换的事件,而siml
仅在导致物联网步骤时执行delta缩减。(参见)
因此,即使我们可以非正式地说,siml
执行这样一系列的调用,它似乎可以使用比cbv
策略公开的更低级别的方法来执行这些缩减。好的,谢谢。你怎么能用一些基本的策略来模仿上面的说法呢?或者用另一种方式说,我从哪里获得更多信息,“siml”是如何工作的?siml是神奇的。如果您可以神奇地获得siml的结果,您可以通过让x:=(神奇地获得siml的结果)在change x
中使用change
对其进行“模拟”。事实上,siml是如此神奇,以至于开发人员在几年前实施了cbn,cbn应该是siml的一个更“表现良好”的版本,但仍然没有解决这两种策略之间的所有纠结和分歧。正如您所指出的,simpl的主要魔力在于定点重新折叠。它如何决定重新折叠哪个固定点是相当复杂的。我建议你爬进Coq的ML档案(Coq俱乐部)。这个问题不是琐碎的,而且是周期性出现的。你应该在那里找到你要找的东西。有人找到了这个链接吗?这里有一个部分解释: