Coq:为什么我不能从Decidable实例中得到明确的见证?

丹尼尔·弗兰克(Daniel Franke)

我首先定义一个辅助函数,以构建Decidable P给定证据的实例{P} + {~P}

Require Import Coq.Classes.DecidableClass.

Definition derive_decidable : forall P : Prop, {P} + {~P} -> Decidable P.
intros P H; destruct H; 
[ apply (Build_Decidable P true) | apply (Build_Decidable P false) ];
intuition congruence.
Qed.

现在,我定义一个愚蠢的类型,并为其指定一个愚蠢的Decidable实例:

Inductive Color := red | green | blue.

Instance Color_eqdec (x y : Color) : Decidable (x = y).
apply derive_decidable; decide equality.
Qed.

现在,我希望能够使用该实例来证明有关颜色的主张,但是我得到了令人惊讶的结果。

Lemma green_neq_blue : green <> blue.
apply (Decidable_complete_alt _ (Color_eqdec green blue)).

我的目标是

Decidable_witness = false

到现在为止还挺好。现在,我希望能够通过来实现此目标compute; reflexivity,但是它没有用。之后compute,我的目标变成

(let (Decidable_witness, _) := Color_eqdec green blue in Decidable_witness) = false

而且无论我做什么,我似乎都无法说服Coq访问我Color_eqdec定义的定义Decidable_witness为什么计算会卡在这里,而不是减少betaColor_eqdec green blue并最终简化为false = false

这个Chajed

您需要使用终止两个实例定义(Color_eqdecderive_decidable),Defined.以使它们的主体透明。

默认情况下,当证明终止Qed于主体时是不透明的,并且该术语不减少。这通常对证明很有用,因为调用者不应依赖于其内容。但是,使用防爆模式构建在条件时Type(即sumboolDecidable你的情况),你真的想计算与身体的LTAC脚本构成,所以你应该使用Defined,使所产生的长期透明。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Java

Java泛型中的见证类型

来自分类Dev

为什么我不能从grpc得到非零响应和错误

来自分类Dev

为什么我不能从闭包中返回引用?

来自分类Dev

为什么我不能从基类的实例访问受保护的成员?

来自分类Dev

为什么我不能从Python类中调用方法?

来自分类Dev

为什么我不能从python中的异常返回我的局部变量?

来自分类Dev

我不知道为什么我不能从Pandas df中删除重复项

来自分类Dev

为什么我不能从提取中存储数据

来自分类Dev

见证在Haskell中评估值的频率

来自分类Dev

为什么我得到'int'不能下标

来自分类Dev

为什么不能从np.ndarray的实例中调用__array_function__?

来自分类Dev

为什么我不能从列表中删除所需的元素

来自分类Dev

为什么我不能从该表中删除记录?

来自分类Dev

为什么我不能从XPath查询中检索URL?

来自分类Dev

为什么我不能从我的SSD引导?

来自分类Dev

为什么我不能从我的活动中调用此服务?

来自分类Dev

为什么我不能从C中的函数传回链表?

来自分类Dev

为什么我不能从我的Json文件中检索数据?

来自分类Dev

为什么我不能从远程分支中拉出?

来自分类Dev

为什么我不能从开关内的变量中减去?

来自分类Dev

为什么我不能从 sqlite 数据库中检索到我期望的数据?

来自分类Dev

为什么我不能从我用泛型创建的类中调用方法?爪哇

来自分类Dev

为什么我不能从我的 sqlite3 数据库中删除?

来自分类Dev

为什么我不能从 useEffect 回调中更新我的组件的状态?

来自分类Dev

为什么我不能在 Python 中删除(移除)静态列表的明确“现有实例”?

来自分类Dev

协议见证相关问题崩溃

来自分类Dev

为什么我不能从我的 scss 文件中调用我的 id 变量?

来自分类Dev

为什么我不能从 VBA 中的多实例表单中获取当前记录 ID

来自分类Dev

为什么我的 Raycast2Ds 不能从我的 tilemap 中检测到墙壁

Related 相关文章

  1. 1

    Java泛型中的见证类型

  2. 2

    为什么我不能从grpc得到非零响应和错误

  3. 3

    为什么我不能从闭包中返回引用?

  4. 4

    为什么我不能从基类的实例访问受保护的成员?

  5. 5

    为什么我不能从Python类中调用方法?

  6. 6

    为什么我不能从python中的异常返回我的局部变量?

  7. 7

    我不知道为什么我不能从Pandas df中删除重复项

  8. 8

    为什么我不能从提取中存储数据

  9. 9

    见证在Haskell中评估值的频率

  10. 10

    为什么我得到'int'不能下标

  11. 11

    为什么不能从np.ndarray的实例中调用__array_function__?

  12. 12

    为什么我不能从列表中删除所需的元素

  13. 13

    为什么我不能从该表中删除记录?

  14. 14

    为什么我不能从XPath查询中检索URL?

  15. 15

    为什么我不能从我的SSD引导?

  16. 16

    为什么我不能从我的活动中调用此服务?

  17. 17

    为什么我不能从C中的函数传回链表?

  18. 18

    为什么我不能从我的Json文件中检索数据?

  19. 19

    为什么我不能从远程分支中拉出?

  20. 20

    为什么我不能从开关内的变量中减去?

  21. 21

    为什么我不能从 sqlite 数据库中检索到我期望的数据?

  22. 22

    为什么我不能从我用泛型创建的类中调用方法?爪哇

  23. 23

    为什么我不能从我的 sqlite3 数据库中删除?

  24. 24

    为什么我不能从 useEffect 回调中更新我的组件的状态?

  25. 25

    为什么我不能在 Python 中删除(移除)静态列表的明确“现有实例”?

  26. 26

    协议见证相关问题崩溃

  27. 27

    为什么我不能从我的 scss 文件中调用我的 id 变量?

  28. 28

    为什么我不能从 VBA 中的多实例表单中获取当前记录 ID

  29. 29

    为什么我的 Raycast2Ds 不能从我的 tilemap 中检测到墙壁

热门标签

归档