Coq 在范围内展开符号

Coq 在范围内展开符号,coq,Coq,提供了一个简单实用的技巧:展开“>=”与展开ge相同,但不要求您知道=是ge的符号 您可以对范围内的符号执行相同的操作吗 Require Import NArith. Goal forall x, (x >= x)%N. unfold ">=". 这里的展开“>=”没有任何作用,因为它试图展开ge,而不是N.ge 我找到了以下解决方案: Open Scope N. unfold ">=". 但是是否有语法允许在不首先打开范围的情况下展开此符号?是的,您可以使用模板展开字符串

提供了一个简单实用的技巧:
展开“>=”
展开ge
相同,但不要求您知道
=
ge
的符号

您可以对范围内的符号执行相同的操作吗

Require Import NArith.
Goal forall x, (x >= x)%N.
unfold ">=".
这里的
展开“>=”
没有任何作用,因为它试图展开
ge
,而不是
N.ge

我找到了以下解决方案:

Open Scope N.
unfold ">=".

但是是否有语法允许在不首先打开范围的情况下展开此符号?

是的,您可以使用模板
展开字符串%scope
,如下所示:

Require Import NArith.
Goal forall x, (x >= x)%N.
  unfold ">=" % N.
这为我们提供了所有x:N,(x?=x)%N Lt的目标
,其中展开的
=
(术语)%scope
是本地打开解释范围的标准语法。碰巧Coq在这种情况下也接受了它。它实际上不是
范围
,而是
,我在这里太草率了。