boolean - Coq 中的 prop 和 bool

标签 boolean coq

如何在 if 语句中使用与有理数的比较?

if 1 = 2 then 1 else 2

1 = 2 当然是 Prop 而不是 bool

最佳答案

我不明白 dfan 的回答与问题有什么关系...

当然,1 = 2 是一个Prop,它是1 等于2 的陈述。希望你没有这个陈述的证明。 ..

你想要的是一个函数,给定两个自然数 12,如果它们相等则返回 true,并且 false 如果不是。

Coq.Arith.EqNat 库为您提供了这样一个函数,名为 beq_nat

事实上,您可能想要更好的东西,一个返回相等证明或差异证明的函数:

(* In Coq.Arith.Peano_dec *)
Theorem eq_nat_dec : forall n m, {n = m} + {n <> m}.
                              (* ^ a proof that n = m
                                           ^ or a proof that n <> m *)

if 被重载来处理这些事情,所以你甚至可以写:

if eq_nat_dec 2 3 then ... else ...

关于boolean - Coq 中的 prop 和 bool,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22798759/

相关文章:

dom - boolean属性应该怎么写?

coq - 如何确定在 coq 中调用哪些术语的介绍

coq - 如何将 set 策略引入的变量添加到 Hint DB 中?

java - 如何将 else false 添加到 boolean 方法

java - 如何将字符更改为 boolean 值?

c++ - String.find 总是返回 true (C++)

coq - Coq 中的 Modus Ponens 和 Modus Tollens

Coq:在假设或目标中用 'forall' 重写

coq - 如何阅读 Coq 对 proj1_sig 的定义?

c++ - 从 std::vector<bool> 获取 bool 引用