gpt4 book ai didi

coq - 在 coq 中,您如何声明/证明枚举元素是不同的?

转载 作者:行者123 更新时间:2023-12-04 13:49:45 26 4
gpt4 key购买 nike

我很高兴向 Coq 介绍自己。现在我一直在做关于枚举的证明:

Inductive Comparison : Type :=
| EQUAL
| GREATER
| LESSER.

EQUAL、GREATER 和 LESSER 是不同的(这似乎是文档所暗示的)是否隐含地是正确的,或者是否只是上面的代码不确定?我不知道如何证明这一点。

Proposition comp_sanity: forall x : Comparison,
x = EQUAL /\ x = GREATER -> False.
Proof.
intros x H_eqgr.

给我:

H_eqgr : x = EQUAL /\ x = GREATER
--------------------------------------------------
False

但后来我卡住了:

Coq> contradiction H_eqgr.
Error: Not a contradiction.

我应该在这里做什么才能拥有完全(明确)的枚举类型?

最佳答案

在您的情况下,我会采用discriminate 策略而不是contradiction。一个简短的版本是:

Proposition comp_sanity: forall x : Comparison,
x = EQUAL /\ x = GREATER -> False.
Proof.
now intros x [h1 h2]; subst; discriminate.
Qed.

翻译成

Proposition comp_sanity: forall x : Comparison,
x = EQUAL /\ x = GREATER -> False.
Proof.
intros x hx.
destruct hx as [h1 h2].
rewrite h1 in h2.
now discriminate h2.
Qed.

没有 intros 模式魔法。

最好的,五、

关于coq - 在 coq 中,您如何声明/证明枚举元素是不同的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29788445/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com