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