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

t∃y.(¬(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.