ที่กำหนดระยะเวลาt : ∀x.∃y.(¬(x = 0) ⇒ x = S(y))
ในประเภททฤษฎีมาร์ตินลอฟ-ของสิ่งที่คุ้มค่าของการw(t(0))
ที่w
เป็นผู้ประกอบการที่สารสกัดจากพยานของระยะเวลาของประเภทการดำรงอยู่หรือไม่?
ที่กำหนดระยะเวลาt : ∀x.∃y.(¬(x = 0) ⇒ x = S(y))
ในประเภททฤษฎีมาร์ตินลอฟ-ของสิ่งที่คุ้มค่าของการw(t(0))
ที่w
เป็นผู้ประกอบการที่สารสกัดจากพยานของระยะเวลาของประเภทการดำรงอยู่หรือไม่?
คำตอบ:
ค่าใด ๆ มันขึ้นอยู่กับที่คุณจะได้รับ เทอมประเภทเป็นคู่ของ intและฟังก์ชั่นที่ใช้พิสูจน์และให้คุณ หลักฐานของ(y) คุณสามารถใช้คำศัพท์ประเภทและประเภท (จากการสะท้อนแสง) เพื่อให้ได้คำศัพท์ประเภทใดก็ได้ที่คุณต้องการ ซึ่งรวมถึงระยะเวลาของชนิด , , \ดังนั้นคุณสามารถทำให้จำนวนเต็มใด ๆ ที่คุณต้องการ∃ Y ( ¬ ( 0 = 0 ) ⇒ 0 = S ( y ) ) y ¬ ( 0 = 0 ) 0 = S ( y ) ¬ ( 0 = 0 ) 0 = 0 0 = S ( 0 ) 0 = S ( 1 ) ... Y
เพื่อแสดงคำตอบของ Mark ให้พิจารณาหลักฐานt
ของคำแถลงการณ์ต่อไปนี้ของคุณซึ่งเขียนเป็น Coq ในการพิสูจน์ที่เราคิดว่าพารามิเตอร์k
ของประเภทnat
จะได้รับ เราใช้k
เป็นค่า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.
เราสามารถพิสูจน์ได้ว่าt 0
เท่ากับk
:
Theorem A: projT1 (t 0) = k.
Proof.
auto.
Qed.
protT1
มีเพราะt 0
ไม่ได้เป็นเพียงจำนวนธรรมชาติ แต่จริง ๆ แล้วเป็นจำนวนธรรมชาติที่มีหลักฐานว่า0 <> 0 -> 0 = S y
และprojT1
พ่นออกหลักฐาน
รหัส Ocaml ที่ถูกแตกออกมาt
ซึ่งได้มาจากคำสั่งExtraction k
คือ
(** val t : nat -> nat **)
let rec t = function
| O -> k
| S n0 -> (match n0 with
| O -> O
| S n1 -> S (t n0))
เราสามารถเห็นได้อีกครั้งt 0
เท่ากับk
ซึ่งเป็นพารามิเตอร์ที่สันนิษฐานว่าเป็นไปในทางที่ผิด