Coq 中是否有一套最小的完整策略?
Is there a minimal complete set of tactics in Coq?
我见过很多在功能上相互重叠的 Coq 策略。
例如,当你对假设有确切的结论时,你可以使用assumption
、apply
、exact
、trivial
等。其他示例包括非归纳类型的 destruct
和 induction
(??).
我的问题是:
是否有完整的 minimal 一套 basic 策略(不包括 auto
等),从某种意义上说,这个集合可以用来证明关于自然数函数的任何 Coq 可证明定理?
这个最小完整集中的策略最好是基本的,这样每个策略只执行一个(或两个)功能,并且可以很容易地理解它的作用。
Coq 中的证明只是一个正确类型的术语。策略通过将较小的子术语组合成更复杂的子术语来帮助您构建这些术语。因此,正如 Konstantin 所提到的,最小的基本策略集将只包含 exact
策略。
refine
策略允许你直接给出证明项,但有漏洞会产生子目标。基本上任何策略都只是 refine
策略的一个实例。
但是,如果您只想首先考虑一组最小的策略,我会考虑 intro{s}
、exists
、reflexivity
、symmetry
、apply
、rewrite
、revert
、destruct
和 induction
。 inversion
也可能很快派上用场。
我见过很多在功能上相互重叠的 Coq 策略。
例如,当你对假设有确切的结论时,你可以使用assumption
、apply
、exact
、trivial
等。其他示例包括非归纳类型的 destruct
和 induction
(??).
我的问题是:
是否有完整的 minimal 一套 basic 策略(不包括 auto
等),从某种意义上说,这个集合可以用来证明关于自然数函数的任何 Coq 可证明定理?
这个最小完整集中的策略最好是基本的,这样每个策略只执行一个(或两个)功能,并且可以很容易地理解它的作用。
Coq 中的证明只是一个正确类型的术语。策略通过将较小的子术语组合成更复杂的子术语来帮助您构建这些术语。因此,正如 Konstantin 所提到的,最小的基本策略集将只包含 exact
策略。
refine
策略允许你直接给出证明项,但有漏洞会产生子目标。基本上任何策略都只是 refine
策略的一个实例。
但是,如果您只想首先考虑一组最小的策略,我会考虑 intro{s}
、exists
、reflexivity
、symmetry
、apply
、rewrite
、revert
、destruct
和 induction
。 inversion
也可能很快派上用场。