首页 > 解决方案 > 如何破坏表达式的值?

问题描述

我正在学习 Coq 并尝试证明下一个看似简单的属性。基本上,我需要考虑所有情况eqb x y,但我通常使用的方法destructinduction策略在这里失败了。

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.

标签: coq

解决方案


intros x y.
destruct (eqb x y).

推荐阅读