coq - 如何破坏表达式的值?
问题描述
我正在学习 Coq 并尝试证明下一个看似简单的属性。基本上,我需要考虑所有情况eqb x y
,但我通常使用的方法destruct
和induction
策略在这里失败了。
Fixpoint eqb (x:nat) (y: nat) :bool :=
match x,y with
| 0, 0 => true
| S xx, S yy => eqb xx yy
| _,_ => false
end.
Definition bool_to_nat (b:bool) :nat :=
match b with
| true => 1
| false => 0
end.
Theorem should_be_easy: forall x:nat, forall y : nat,
bool_to_nat (eqb x y) + bool_to_nat (negb (eqb x y)) = 1.
intros x y. Abort.
解决方案
intros x y.
destruct (eqb x y).
推荐阅读
- javascript - 如何修复 TamperMonkey 脚本中未显示的按钮
- flutter - 哪个小部件可用于解释应用程序中的功能
- ios - 正则表达式在一行特殊字符之前分隔组
- html - 我如何使用css在边框上显示文本
- python - “UpdateQuery”对象没有属性“get_field”错误
- json - DW mule中的json键迭代
- java - 使用 java 语言的 Spark cassandra 连接应该使用哪些版本?
- google-apps-script - Chrome DevTools 不仅仅出现在 Google 表单页面上
- cordova - DataWedge 以编程方式设置选项列表
- amazon-web-services - 使用 Amazon-Lex 对意图进行评分/置信度