回答:
マークの答えを示すためにt
、Coqで書かれた次のステートメントの証拠を検討してください。証明ではk
、型のパラメーターnat
が与えられていると仮定します。case k
の値として使用します。y
x = 0
Parameter k : nat.
Theorem t : forall x : nat, { y : nat | x <> 0 -> x = S y}.
Proof.
induction x.
exists k; tauto.
induction x.
exists 0; auto.
destruct IHx as [z G].
exists (S z).
intro H.
elim G; auto.
Defined.
以下t 0
と等しいことを証明できますk
。
Theorem A: projT1 (t 0) = k.
Proof.
auto.
Qed.
protT1
ので、そこにあるt 0
だけの自然数ではなく、実際の自然数であることの証明0 <> 0 -> 0 = S y
とprojT1
離れて証拠をスローします。
以下のために抽出OCamlのコードt
コマンドで得られた、Extraction k
あります
(** val t : nat -> nat **)
let rec t = function
| O -> k
| S n0 -> (match n0 with
| O -> O
| S n1 -> S (t n0))
繰り返しますt 0
が、に等しいことがわかりk
ます。これは、仮に想定されたパラメーターでした。