为了尽可能地隔离这个问题,假设我开始一个 Coq 会话,如下所示。
Parameter A : Type.
Parameter B : Type.
Parameter P : A -> B -> Prop.
Axiom existence : forall a : A, exists b : B, P a b.
Axiom uniqueness : forall a : A, forall b b' : B, P a b -> P a b' -> b = b'.
从这里开始,我想将一个函数定义为始终为真的f : A -> B
唯一函数。P a (f a)
我怎样才能做到这一点?我可以这样做吗?显然我应该从类似的东西开始
Definition f : A -> B.
intro a.
assert (E := existence a).
assert (U := uniqueness a).
...但是我如何根据这些假设实际编写函数?