在Coq中:用多个变量反演存在量词,用一个命令?

时间:2016-07-09 14:03:30

标签: exists coq inversion

我正在研究一个有假设的证明

H : exists a b v, P a b v

如果我使用inversion H,那么我就会恢复

a : nat
H1 : exists b v, P a b v.

这很好,但是我需要再使用两次反转来恢复b和v。 是否只有一个命令可以同时恢复a,b,v?

2 个答案:

答案 0 :(得分:3)

您可以使用模式列表(p1 & ... & pn)作为右关联二元归纳构造函数的序列,例如conjex_intro

destruct H as (a & b & v & H).

参考手册的另一个很好的例子:如果我们有一个假设

H: A /\ (exists x, B /\ C /\ D)

然后,我们可以用

破坏它
destruct H as (a & x & b & c & d).

答案 1 :(得分:2)

是的,通过为要引入的对象指定粘合剂,如下所示:

inversion [a [b [v H']]].

请注意,destruct也适用于此(使用相同的语法),它会生成稍微简单的证明(通常,手册会警告inversion生成的大型证据。)