Bir tanığı çıkarmaya çalışırsak, ama aslında varoluşçu tipte bir terimden mevcut değilse ne olur?


12

t : ∀x.∃y.(¬(x = 0) ⇒ x = S(y))Martin-Lof'un tip teorisinde bir terim göz önüne alındığında , değeri nedir , varoluşçu bir türün tanıklığını çıkaran operatör w(t(0))nerede w?


Sanırım demek istediniz . ¬(x=0)
Mark Reitblatt

Evet, Mark, işaret ettiğin için teşekkürler, düzeltildi.
günü

Yanıtlar:


12

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 = 0ty.(¬(0=0)0=S(y))y¬(0=0)0=S(y)¬(0=0)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ı.0=S(0)0=S(1)...y


10

Mark'ın cevabını göstermek tiçin Coq. İspat biz bir parametre olduğunu varsayalım kÇeşidi natverilir. Aşağıdaki durumlarda kdeğer olarak kullanırız :yx = 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 0eşit olduğunu kanıtlayabiliriz k:

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

protT1Çünkü orada t 0sadece bir doğal sayı, ama aslında doğal bir sayı değil ile bir kanıtı 0 <> 0 -> 0 = S yve projT1uzak kanıt atar.

İçin ekstre Ocaml kod tkomutu ile elde edilen, Extraction kbir

(** 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 0isimli e eşit kbir aribtrarily kabul parametre olan,.


Coq, Andrej'deki örnek için teşekkürler, daha fazlasını açıklıyor.
gün
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.