Jawaban:
Untuk menunjukkan jawaban Markus, pertimbangkan bukti t
pernyataan Anda berikut , yang ditulis dalam Coq. Dalam buktinya kita mengasumsikan bahwa parameter k
tipe nat
diberikan. Kami menggunakan k
sebagai nilai y
jika 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.
Kita dapat membuktikan bahwa t 0
itu sama dengan k
:
Theorem A: projT1 (t 0) = k.
Proof.
auto.
Qed.
Ada di protT1
sana karena t 0
bukan hanya bilangan alami, tetapi sebenarnya bilangan alami dengan bukti itu 0 <> 0 -> 0 = S y
dan projT1
membuang buktinya.
Kode Ocaml yang diekstraksi untuk t
, diperoleh dengan perintah Extraction k
adalah
(** val t : nat -> nat **)
let rec t = function
| O -> k
| S n0 -> (match n0 with
| O -> O
| S n1 -> S (t n0))
Sekali lagi kita dapat melihat t 0
sama dengan k
, yang merupakan parameter yang diasumsikan aribtrently.