在 Coq 中提出证明

Pose proof in Coq

我正在尝试用 Coq 证明一个定理。我当前的上下文是:

1 subgoal
s, x : Entity
Pssx : Ps s x
Fxs : F x s
IPssx : F x s /\ Ps s x
t : Entity
Ctss : C t s s
Pstx : Ps t x
Fxt : F x t
______________________________________(1/1)
C s s s

FPsC是理论关系。我还有公理 4:

Axiom A4 : forall x s t,
  Ps s x /\ F x s /\ Ps t x /\ F x t -> s = t.

我想做的是在证明中使用 A4,因为它会帮助我说 s 和 t 相等。所以我测试了:pose proof (A4 x s t). 添加了一个新的假设:H : Ps s x /\ F x s /\ Ps t x /\ F x t -> s = t。我知道我可以推翻假设 H,证明前提并使用结论。但是我也知道我可以直接在pose proof命令中给出前提。我想做类似 pose proof (A4 x s t Premisses). 但我不知道用什么代替 Premisses

我尝试了几种解决方案:

所以我的问题如下:我应该用什么代替 Premisses 让我的代码工作?是否有命令根据其他假设创建新假设?我知道如何将一个假设分解为两个较小的假设,但我不知道如何组合假设来创建更大的假设。

Coq 中的标准是 curry 你的 A4 这样它就不会接收一个大连词作为前提,而是接收几个不同的前提:

Axiom A4' : forall x s t,
  Ps s x -> F x s -> Ps t x -> F x t -> s = t.

那么你可以这样做:

pose proof (A4' x s t Pssx Fxs Pstx Fxt).

如果你确实需要 A4 连词,你可以使用 conj(你可以用 Print "_ /\ _" 找到):

pose proof (A4 x s t (conj Pssx (conj Fxs (conj Pstx Fxt)))).