私は以下の質問をしています。定理からの情報を使ったパターンマッチング
(* Suppose we have type A *)
Variable A: Type.
(* Also we have a function that returns the type (option A) *)
Definition f_opt x: option A := ...
(* Then, I can prove that this function always returns something: *)
Theorem always_some: forall x, exists y, f_opt x = Some y.
Admitted.
(* Or, equivalently: *)
Theorem always_not_none: forall x, f_opt x <> None.
Admitted.
今、私はいつもタイプA
の値を返すf_opt
のバージョンを取得したいと思います。このような何か:
Definition f x: A :=
match f_opt x with
| Some y => y
end.
しかし、私は次のエラーを取得:
Non exhaustive pattern-matching: no clause found for pattern
None
.
私はタイプの作品のいくつかの種類を行う必要があることを理解し、私はまさに私が何をすべきか理解していないが。
'f'が他の公理に依存するかどうかを調べるには' Print Assumptions f.'コマンドを使用できます。 –