大括号{}在ssreflect重写中做了什么

时间:2016-01-01 23:59:05

标签: coq ssreflect

我正在阅读并使用ssreflect教程,并且遇到使用{}引用的东西,我不太明白:

Variables P Q : bool -> Prop.
Hypothesis P2Q : forall a b, P (a || b) -> Q a.
Goal forall a, P (a || a) -> True.
  move=> a HPa. move: {HPa} (@P2Q _ _ HPa) => HQa.

有人可以解释{HPa}HPa做了什么吗?

顺便说一句,上下文是介绍“观点”的。我尝试删除{},它仍然有效但生成了不同的东西。我不知道在哪里查找括号或@之类的文档。

1 个答案:

答案 0 :(得分:1)

经过一些实验和比较后,似乎{H}的函数在Coq术语中为clear H.

move: {HPa} (@P2Q _ _ HPa) => HQa.

给出

1 subgoals
a : bool
HQa : Q a
______________________________________(1/1)
True

move: (@P2Q _ _ HPa) => HQa.
除了HPa在上下文中保持完整外,

给出了同样的东西:

1 subgoals
a : bool
HPa : P (a || a)
HQa : Q a
______________________________________(1/1)
True