Coq中的证明模式定义?

Coq中的证明模式定义?,coq,coq-tactic,Coq,Coq Tactic,有人能给我一些关于如何阅读校对模式定义的好资料吗(举个例子:) 其中,“FSS”、“FS”和“S”是前面定义的sig类型。我知道个人策略“破坏”、“提炼”和“应用”的作用,但用一个证明词来说 一个定义,我不可能不编译就阅读这个证明(我不能编译这些文件,只能阅读它们的源代码)。有谁能帮助我阅读这些定义,或者给我指出一些源代码吗?没有编译定义(也没有看到FS和FSS的定义),这是不可能的,但我们仍然可以猜测一点。destruct策略在s上创建一个与构造匹配的,该构造类型为sig,具有唯一的构造函数e

有人能给我一些关于如何阅读校对模式定义的好资料吗(举个例子:)

其中,“FSS”、“FS”和“S”是前面定义的sig类型。我知道个人策略“破坏”、“提炼”和“应用”的作用,但用一个证明词来说
一个定义,我不可能不编译就阅读这个证明(我不能编译这些文件,只能阅读它们的源代码)。有谁能帮助我阅读这些定义,或者给我指出一些源代码吗?

没有编译定义(也没有看到
FS
FSS
的定义),这是不可能的,但我们仍然可以猜测一点。
destruct
策略在
s
上创建一个与
构造匹配的
,该构造类型为
sig
,具有唯一的构造函数
exist
。函数的参数中没有
a
,因此
a
要么是全局符号,要么是第一个
析构函数创建的变量。让我们假设是后者。对于
x
,情况也一样

战术
refine
创建了一个术语,可能有漏洞。术语
exist\ux
包含两个孔。第一个
由Coq填写,但最后一个大概必须由用户填写,因此这就是
apply H
的用途。至于
H
,让我们假设它来自前面的
析构函数之一

请注意,
apply
可能首先只使用一个构造函数分解归纳值。因此,如果
H
恰好是
A/\B
类型(如果它来自第一个
destruct
),那么
apply H
实际上可能是
apply(proj1h)
apply(proj2h)
。无论如何,既然证明已经完成,这个
应用
大概是
精确的

因此,有许多可能性。以下是一个例子:

Definition A ss n s :=
  match s with
  | exist _ a H =>
    match a with
    | ... x ... =>         (* H could come from there too *)
      exist _ x (proj1 H)  (* or (proj2 H), or plain H *)
    end
  end.

Definition A ss n s :=
  match s with
  | exist _ a H =>
    match a with
    | ... x ... =>         (* H could come from there too *)
      exist _ x (proj1 H)  (* or (proj2 H), or plain H *)
    end
  end.