Coq:承认断言

Sib*_*ibi 3 haskell theorem-proving coq

有没有办法在Coq中承认断言?

假设我有一个这样的定理:

Theorem test : forall m n : nat,
    m * n = n * m.
Proof.
  intros n m.
  assert (H1: m + m * n = m * S n). { Admitted. }
Abort.
Run Code Online (Sandbox Code Playgroud)

上面的断言似乎对我不起作用。

我收到的错误是:

Error: No focused proof (No proof-editing in progress).
Run Code Online (Sandbox Code Playgroud)

我想要的是undefinedHaskell中的东西。Baiscally,我稍后会再次证明这一点。在Coq中有类似的东西可以实现吗?

ich*_*ame 5

通常,策略admit(小写首字母)接受当前的子目标。因此assert <your assertion>. admit.应在您的情况下工作。

或以其最大的荣耀如下。

Theorem test : forall m n : nat,
  m * n = n * m.
Proof.
  intros n m.
  assert (H1: m + m * n = m * S n). admit.
Abort.
Run Code Online (Sandbox Code Playgroud)

编辑:的版本;是废话,因为您不想接受所有子目标。

  • 另一种语法是``通过承认断言(H1:m + m * n = m * S n)。'' (6认同)
  • 同样,从Coq 8.5开始(我认为不早于此),如果要保存结果,则任何带有`admit`的证明脚本都必须以`Admitted.`而不是`Qed.` /`Defined。结尾。 (4认同)