この問題をできるだけ切り分けるために、次のように 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'.
ここからは、常に truef : A -> B
である一意の関数として関数を定義したいと思います。P a (f a)
これどうやってするの?これはできますか?明らかに、私は次のようなものから始めるべきです
Definition f : A -> B.
intro a.
assert (E := existence a).
assert (U := uniqueness a).
...しかし、これらの仮説に関して実際に関数をどのように記述すればよいでしょうか?