2
我想了解'上下文'表达式(与context
模式相反)。在手动它被描述为:Coq中的上下文表达式
上下文IDENT [EXPR]
IDENT必须表示由 匹配表达式的上下文图案结合的上下文变量。这个表达式的计算结果用expr的值替换了ident的 值的空洞。
有人可以共享一个例子说明这种构造的用法吗?我想它必须涉及match
使用context
模式,然后上述形式使用匹配的上下文。
我想了解'上下文'表达式(与context
模式相反)。在手动它被描述为:Coq中的上下文表达式
上下文IDENT [EXPR]
IDENT必须表示由 匹配表达式的上下文图案结合的上下文变量。这个表达式的计算结果用expr的值替换了ident的 值的空洞。
有人可以共享一个例子说明这种构造的用法吗?我想它必须涉及match
使用context
模式,然后上述形式使用匹配的上下文。
这里是取代fst (a, _)
与a
和snd (_, b)
与b
的例子,但适用于除对其他任何fst
和snd
不碰:
Ltac unfold_proj_pair :=
repeat match goal with
| [ |- context G[fst (?a, _)] ]
=> let G' := context G[a] in change G'
| [ |- context G[snd (_, ?b)] ]
=> let G' := context G[b] in change G'
end.
(注意cbn [fst snd]
是做一个简单的方法这,也适用于粘结剂。)
谢谢!我认为在手册中包含这个或类似的例子会很棒。 – krokodil
我认为这是一个“漏洞”。无论如何,这是它在手册中说的:https://coq.inria.fr/refman/ltac.html#hevea_default856 – krokodil
heh ok!听起来不错.. – Fattie