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?


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


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.


Terima kasih untuk contoh dalam Coq, Andrej, ini menjelaskan lebih lanjut.
hari
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.