2017-09-22 18 views

答えて

3

あなたが行うことができた(平等がtyのために決定可能であることを証明する必要があります自動的にdecide equalityを使用して)、その定義をif ... then ... else ...ステートメントで使用します。具体的には:

Inductive ty: Set := 
| I 
| O. 

Definition ty_eq_dec : forall (x y : ty), { x = y } + { x <> y }. 
Proof. 
decide equality. 
Defined. 

Definition f (x: ty) (y: ty): nat := 
    if ty_eq_dec x y then 0 else 1. 
+0

{} + {}についてもう少し分かりますか? Proposition1やProp2のように思った。しかし、それはそのようには機能しません。彼らのために「分割」のようなものがありますか? – abhishek

+0

@abhishek [sumbool](https://coq.inria.fr/library/Coq.Bool.Sumbool.html)を参照してください。例: [このブログの投稿](http://seb.mondet.org/blog/post/coqtests-02-sumbools.html) – gallais

1

あなたは、誘導データ型の要素を比較するためにmatchを使用することができます。

Definition f x y := match x,y with I, I | O, O => 0 | _,_ => 1 end. 

decide equalityは、より一般的な戦術で、無限のセットのために動作しますが、本当の仕事をしているmatchであることを知って良いです。

+0

あなたはこの関数がforall xy、fxy = 0を満たすことによってこの答えを改善することができます<-> x = yこのことは非常に簡単に証明できます。 – Yves

関連する問題