Yanıtlar:
Herhangi bir değer. Size verilen bağlıdır . ∃ y türünde bir terim . ( ¬ ( 0 = 0 ) ⇒ 0 = S ( y ) ) , bir int y çifti ve ¬ ( 0 = 0 ) ispatı alan ve size 0 = S ( y ) ispatı veren bir işlevdir . Sen türde bir terim kullanabilir ¬ ( 0 = 0 ) ve tip 0 = 0(refleksiviteden) istediğiniz türden bir terim türetmek için. Bu, , 0 = S ( 1 ) , … tipinde bir terimi içerir . Yani, yapabilir y istediğiniz herhangi bir tamsayı.
Mark'ın cevabını göstermek t
için Coq. İspat biz bir parametre olduğunu varsayalım k
Çeşidi nat
verilir. Aşağıdaki durumlarda k
değer olarak kullanırız :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.
Bunun t 0
eşit olduğunu kanıtlayabiliriz k
:
Theorem A: projT1 (t 0) = k.
Proof.
auto.
Qed.
protT1
Çünkü orada t 0
sadece bir doğal sayı, ama aslında doğal bir sayı değil ile bir kanıtı 0 <> 0 -> 0 = S y
ve projT1
uzak kanıt atar.
İçin ekstre Ocaml kod t
komutu ile elde edilen, Extraction k
bir
(** val t : nat -> nat **)
let rec t = function
| O -> k
| S n0 -> (match n0 with
| O -> O
| S n1 -> S (t n0))
Yine görebilir t 0
isimli e eşit k
bir aribtrarily kabul parametre olan,.