{assume,apply,intro}对于min prop逻辑就足够了

时间:2017-02-11 06:08:05

标签: coq

我读到来自{assumption, apply, intro}的集Ltac策略足以证明最小建设性命题逻辑中的任何重言式。

我认为这个声明的笔和纸证明是通过对重言式语法的归纳来完成的,它表明3种策略可以逐步建立一个代表重言式的术语。 / p>

我很想知道是否可以使用Ltac或其他元语言替代内部 Coq。

这意味着Ltac或另一种元语言可以反映这些策略的真正作用,并可以将它们作为变量进行操纵。

即使有点做作,我对这方面的肯定答案很感兴趣。

1 个答案:

答案 0 :(得分:2)

实际上,只需apply即可。只需应用具有正确类型的证明条款。或者要非常精益,根本不要使用任何Ltac,只需分配证明条件

定义名称:< 命题> :=< 证明条款>。

示例:

Lemma has_next :  forall n, exists n', S n = n'.
Proof. 
  intro n. 
  exists (S n). 
  reflexivity. 
Qed.

可以"证明"通过直接提供证明条款。

Definition has_next : forall n, exists n', S n = n' := fun n => ex_intro  _ (S n) eq_refl.

你知道,Ltac命令并不神奇。它们只是一些工具,可以让您更容易一点一点地创建证明术语,但如果您想尽可能少地使用策略,则可以一次性提供整个证明术语。

"证明"来自这样一个事实,即你已经证明确实存在一个具有所需类型(命题)的证明术语。并且Coq为您检查该术语,以确保该术语实际上具有该类型。

只要术语类型检查,Coq甚至不关心这个术语是如何构建的 - 通过神圣的洞察力或部分错误的程序。