Apa yang terjadi jika kita mencoba mengekstraksi saksi tetapi sebenarnya tidak ada dari istilah tipe eksistensial?

12

Diberi istilah t : ∀x.∃y.(¬(x = 0) ⇒ x = S(y))dalam teori tipe Martin-Lof, berapakah nilainya w(t(0)), di mana woperator yang mengekstraksi saksi dari istilah tipe eksistensial?

hari
sumber
Saya pikir maksud Anda . ¬(x=0)
Mark Reitblatt
Ya, Mark, terima kasih telah menunjukkan itu, diperbaiki.
hari

Jawaban:

12

ty.(¬(0=0)0=S(y))y¬(0=0)0=S(y)¬(0=0)0=00=S(0)0=S(1)y

Tandai Reitblatt
sumber
10

Untuk menunjukkan jawaban Markus, pertimbangkan bukti tpernyataan Anda berikut , yang ditulis dalam Coq. Dalam buktinya kita mengasumsikan bahwa parameter ktipe natdiberikan. Kami menggunakan ksebagai nilai yjika 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 0itu sama dengan k:

Theorem A: projT1 (t 0) = k.
Proof.
  auto.
Qed.

Ada di protT1sana karena t 0bukan hanya bilangan alami, tetapi sebenarnya bilangan alami dengan bukti itu 0 <> 0 -> 0 = S ydan projT1membuang buktinya.

Kode Ocaml yang diekstraksi untuk t, diperoleh dengan perintah Extraction kadalah

(** 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 0sama dengan k, yang merupakan parameter yang diasumsikan aribtrently.

Andrej Bauer
sumber
Terima kasih untuk contoh dalam Coq, Andrej, ini menjelaskan lebih lanjut.
hari