我有以下问题,请看代码。
(* 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.
现在我想获得一个f_opt
总是返回 type 值的版本A
。像这样的东西:
Definition f x: A :=
match f_opt x with
| Some y => y
end.
但我收到以下错误:
非详尽的模式匹配:没有找到 pattern 的子句
None
。
我知道我需要对类型做一些工作,但我不明白我到底应该做什么。