คำถามติดแท็ก coq

Coq เป็นสุภาษิตทฤษฎีบทแบบโต้ตอบ

3
กับตื้นลึก Embeddings
เมื่อเข้ารหัสตรรกะลงในตัวช่วยพิสูจน์เช่น Coq หรือ Isabelle ต้องมีการเลือกระหว่างการใช้ตื้นและการฝังลึก ในการฝังสูตรตรรกะตื้น ๆ จะถูกเขียนโดยตรงในตรรกะของทฤษฎีบทพิสูจน์ในขณะที่ในสูตรตรรกะฝังลึกจะแสดงเป็นประเภทข้อมูล อะไรคือข้อดีและข้อ จำกัด ของวิธีการต่าง ๆ มีอะไรบ้าง มีแนวทางใดบ้างในการพิจารณาว่าจะใช้อย่างไร เป็นไปได้หรือไม่ที่จะสลับระหว่างการเป็นตัวแทนสองประการในรูปแบบที่เป็นระบบ? ฉันต้องการเข้ารหัส logics ที่เกี่ยวข้องกับความปลอดภัยต่าง ๆ เป็น Coq และฉันสงสัยว่าข้อดีข้อเสียของวิธีการที่แตกต่างกันคืออะไร

4
ฉันจะเรียนรู้ทฤษฎีพื้นฐานของผู้ช่วยพิสูจน์ Coq ได้อย่างไร
ฉันกำลังจะไปดูรายละเอียดหลักสูตรที่CIS 500: ฐานรากซอฟต์แวร์และแบบฝึกหัดสนุกมาก ฉันเป็นแค่ชุดออกกำลังกายชุดที่สาม แต่ฉันต้องการทราบเพิ่มเติมเกี่ยวกับสิ่งที่เกิดขึ้นเมื่อฉันใช้กลยุทธ์เพื่อพิสูจน์สิ่งต่าง ๆ เช่นforall (n m : nat), n + n = m + m -> n = m.

3
ทำไม Coq ถึงมี Prop?
Coq มีข้อเสนอประเภทข้อพิสูจน์ที่ไม่เกี่ยวข้องซึ่งถูกทิ้งในระหว่างการแยก อะไรคือสาเหตุของการมีสิ่งนี้หากเราใช้ Coq สำหรับการพิสูจน์เท่านั้น Prop นั้นไม่จำเป็นดังนั้น Prop: Propอย่างไรก็ตาม Coq จะ infers ดัชนีของจักรวาลโดยอัตโนมัติและเราสามารถใช้ Type (i) แทนได้ทุกที่ ดูเหมือนว่า Prop จะทำให้ทุกอย่างซับซ้อนขึ้นมาก ฉันอ่านว่ามีเหตุผลทางปรัชญาในการแยก Set และ Prop ในหนังสือของ Luo แต่ฉันไม่พบพวกเขาในหนังสือ พวกเขาคืออะไร

2
ทำไม Agda และ Coq ไม่เห็นด้วยกับความเข้มงวด
ฉันพบความขัดแย้งที่สับสนระหว่าง Agda และ Coq ซึ่งไม่เกี่ยวข้องกับความแตกต่างที่รู้จักกันดีที่สุดระหว่างทฤษฎีประเภทของพวกเขา (เช่น (im) predicativity, induction-recursion, ฯลฯ ) โดยเฉพาะอย่างยิ่งคำจำกัดความต่อไปนี้ได้รับการยอมรับโดย Agda: data Ty : Set0 -> Set0 where c1 : Ty ℕ c2 : Ty (Ty ℕ) ในขณะที่คำจำกัดความ Coq ที่เท่าเทียมกันนั้นถูกปฏิเสธเนื่องจากรูปลักษณ์ของ [Ty _] เป็นดัชนีของตัวเองใน c2 นั้นถือว่าเป็นการละเมิด positivity ที่เข้มงวด Inductive Ty : Set -> Set := | c1 : Ty …
24 type-theory  coq 

1
คลาสของฟังก์ชันที่คำนวณได้โดย Coq
เนื่องจากไม่อนุญาตให้มีการคำนวณแบบไม่ จำกัด Coq จึงไม่จำเป็นต้องใช้ทัวริงแบบสมบูรณ์ คลาสของฟังก์ชันที่ Coq สามารถคำนวณคืออะไร (มีลักษณะที่น่าสนใจหรือไม่)

1
หลักฐานที่แสดงว่า Coq + Excluded Middle ตรงไหน
ฉันเคยเห็น (และได้ยิน) มันอ้างว่ามันปลอดภัยที่จะเพิ่มสัจพจน์คลาสสิกที่ไม่รวมถึง Coq แต่ฉันไม่สามารถหาเอกสารสนับสนุนการอ้างสิทธิ์นี้ได้ เอกสารที่ฉันเห็นอยู่ในรายการCoq wikiเกี่ยวกับตรงกลางที่ยกเว้นนั้นแสดงให้เห็นถึงความไม่สอดคล้องกับชุดที่แสดงอารมณ์ไม่ได้ ที่จริงแล้วดูเหมือนว่า Coquand กล่าวว่าการเพิ่มยกเว้นกลาง (ผู้อยู่อาศัยของ ) ไม่สอดคล้องกับ CoC ในส่วน 4.5.3 ของคำอธิบายของเขา(PDF) ของ metatheory ของ CoC อย่างไรก็ตามส่วนนี้ค่อนข้างลึกซึ้งสำหรับฉันดังนั้นฉันอาจจะเข้าใจผิดเขาเป็นอย่างดีA + ¬ AA+¬AA+\neg A

2
ทำไมลำดับชั้นประเภทไม่สิ้นสุด?
Coq, Agda และ Idris มีลำดับชั้นชนิดไม่ จำกัด (ประเภท 1: ประเภท 2: ประเภท 3: ... ) แต่ทำไมไม่ทำอย่างนั้นแทนλCระบบในแลมบ์ดาคิวบ์ที่อยู่ใกล้กับแคลคูลัสของสิ่งก่อสร้างซึ่งมีเพียงสองประเภทและ◽และกฎเหล่านี้?∗∗*◽◽◽ ∅⊢∗:◽∅⊢∗:◽\frac {} {∅ ⊢ * : ◽} Γ⊢T1:s1Γ,x:T1⊢t:T2Γ⊢(λx:T1,t):(Πx:T1,T2)Γ⊢T1:s1Γ,x:T1⊢t:T2Γ⊢(λx:T1,t):(Πx:T1,T2)\frac {Γ ⊢ T _ 1 : s _ 1 \qquad Γ, \: x : T _ 1 ⊢ t : T _ 2} {Γ ⊢ (λ \: …

1
พิสูจน์การไม่เกี่ยวข้องใน Coq?
มีวิธีการพิสูจน์ทฤษฎีบทต่อไปนี้ใน Coq หรือไม่? Theorem bool_pirrel : forall (b : bool) (p1 p2 : b = true), p1 = p2. แก้ไข : ความพยายามที่จะให้คำอธิบายสั้น ๆ สำหรับ "สิ่งที่ไม่เกี่ยวข้องพิสูจน์หลักฐาน" (แก้ไขฉันบางคนถ้าฉันผิดหรือไม่ถูกต้อง) แนวคิดพื้นฐานคือในโลกของข้อเสนอ (หรือPropเรียงลำดับใน Coq) สิ่งที่คุณ (และคุณควร) สนใจจริงๆคือการพิสูจน์ข้อเสนอไม่ใช่ข้อพิสูจน์ของมันอาจมีจำนวนมาก (หรือไม่มี) ในกรณีที่คุณมีการพิสูจน์หลายจากจุด provability ในมุมมองของพวกเขามีความเท่าเทียมกันในแง่ที่ว่าพวกเขาพิสูจน์เรื่องเดียวกัน ดังนั้นความแตกต่างของพวกเขาจึงไม่เกี่ยวข้อง สิ่งนี้แตกต่างจากมุมมองการคำนวณที่คุณสนใจจริง ๆ ถึงความแตกต่างของคำสองคำเช่นโดยทั่วไปคุณไม่ต้องการให้ผู้อยู่อาศัยทั้งสองboolประเภท (หรือSetในคำพูดของ Coq) คือtrueและfalseเท่าเทียมกัน แต่ถ้าคุณใส่ไว้ในPropนั้นพวกเขาจะได้รับการปฏิบัติที่เท่าเทียมกัน

3
อะไรคือบทบาทของ predicativity ในคำจำกัดความอุปนัยในทฤษฎีประเภท?
บ่อยครั้งที่เราต้องการกำหนดวัตถุตามกฎการอนุมาน กฎเหล่านั้นแสดงถึงฟังก์ชั่นการสร้างFซึ่งเมื่อมันเป็นเนื่องถัวเฉลี่ยจุดอย่างน้อยคงμ F เราใช้: = μ Fจะเป็น "นิยามอุปนัย" ของ ยิ่งกว่านั้น monotonicity ของFทำให้เราสามารถให้เหตุผลกับ "หลักการของการเหนี่ยวนำ" เพื่อกำหนดว่าเมื่อใดที่เซตประกอบด้วยA (เช่นเมื่อสมบัติครอบคลุมทั่วA )A∈UA∈ยูA \in UFFFμFμF\mu FA:=μFA=μFA := \mu FAAAFFFAAAAAA ใน Coq ตรงนี้เพื่อเขียนนิยามของกับคำแนะนำอย่างชัดเจน ในขณะที่คำจำกัดความนี้หมายถึงฟังก์ชั่นเฉพาะF , ฟังก์ชั่นนั้นไม่จำเป็นต้องเป็นแบบโมโนโทนิก Coq จึงใช้การตรวจสอบวากยสัมพันธ์บางอย่างเพื่อรับประกัน "ความมีรูปแบบที่ดี" ของคำจำกัดความ สำหรับการประมาณค่าบางอย่างมันจะปฏิเสธการเกิดขึ้นของAในตำแหน่งลบในประเภทของคำแนะนำInductiveผมndยูคเสื้อผมโวลต์อี\mathtt{Inductive}AAAFFFAAA (หากความเข้าใจของฉันถึงจุดนี้มีข้อบกพร่องโปรดแก้ไขฉัน!) ก่อนคำถามบางคำถามในบริบทของ Coq: 1) ไม่ตรวจสอบประโยคใน Coq เพียงทำหน้าที่เพื่อให้มั่นใจว่านิยามของเป็นกริยา ? (ถ้าเป็นเช่นนั้นการไม่แสดงอารมณ์นั้นเป็นวิธีเดียวที่นิยามจะไม่ถูกต้องหรือไม่) หรือมันกำลังตรวจสอบความน่าเบื่อหน่ายหรือไม่? (ตามลําดับคือสิ่งที่ไม่สามารถพูดซ้ำได้สิ่งที่อาจฆ่ามัน)AAA 2) ไม่เช่นที่เกิดขึ้นในเชิงลบของจำเป็นต้องหมายความว่าความหมายก็คือ impredicative / ไม่ใช่ต่อเนื่อง? หรือ …

2
กำจัด cofix ในการพิสูจน์ Coq
ในขณะที่พยายามพิสูจน์คุณสมบัติพื้นฐานบางอย่างโดยใช้ประเภทเหรียญใน Coq ฉันยังคงพบปัญหาต่อไปนี้และฉันไม่สามารถแก้ไขได้ ฉันกลั่นปัญหาให้เป็นสคริปต์ Coq อย่างง่ายดังนี้ ประเภทต้นไม้กำหนดอาจจะเป็นต้นไม้ที่ไม่มีที่สิ้นสุดที่มีสาขาที่มีข้อความที่มีองค์ประกอบของประเภท สาขาไม่จำเป็นต้องกำหนดไว้สำหรับองค์ประกอบทั้งหมดของ ค่าUnivเป็นต้นไม้ที่ไม่มีที่สิ้นสุดกับทุกสาขาที่กำหนดไว้เสมอ isUnivทดสอบไม่ว่าจะเป็นต้นไม้ที่ได้รับจะเท่ากับUniv บทแทรกฯ ระบุว่าUnivตอบสนองความต้องการisUnivได้อย่างแน่นอน Parameter A : Set. CoInductive Tree: Set := Node : (A -> option Tree) -> Tree. Definition derv (a : A) (t: Tree): option Tree := match t with Node f => f a end. CoFixpoint Univ : …


2
ซีแมนทิกส์ทางการของ OCaml ใน Coq
ความหมายของชุดย่อยขนาดใหญ่ของ OCaml เรียกว่าOCamllightเป็นกรงเล็บใน HOL โดย Owens เมื่อหลายปีก่อน เมื่อเร็ว ๆ นี้ประเภทความหมายของทฤษฎีเซตย่อยขนาดเล็กของ OCaml ได้ดำเนินการใน Nuprl โดยKreitz เฮย์เดนและ Hickey มีการพัฒนาที่คล้ายกันใน Coq หรือไม่?

1
วิธีการกำหนดฟังก์ชั่น inductively สองข้อโต้แย้งใน Coq?
ฉันจะโน้มน้าวใจให้ Coq ได้อย่างไรว่าฟังก์ชั่นวนซ้ำที่ระบุด้านล่างนี้ยุติลง? ฟังก์ชั่นใช้เวลาสองข้อโต้แย้งอุปนัย การสอบถามซ้ำจะสิ้นสุดลงเนื่องจากการโต้แย้งใด ๆ ถูกย่อยสลาย ฟังก์ชั่นนี้ใช้ต้นไม้สองต้นเป็นอินพุต Inductive Tree := | Tip: Tree | Bin: Tree -> Tree -> Tree. บนต้นไม้ฉันชอบทำรูปแบบการเหนี่ยวนำต่อไปนี้ Inductive TreePair := | TipTip : TreePair | TipBin : Tree -> Tree -> TreePair | BinTip : Tree -> Tree -> TreePair | BinBin : TreePair -> …

4
แบบจำลองวัตถุ (OOP) ในทฤษฎีประเภทขึ้นอยู่กับ
ฉันสนใจในการสร้างแบบจำลองวัตถุจากการเขียนโปรแกรมเชิงวัตถุในทฤษฎีประเภทขึ้นอยู่กับ ในฐานะที่เป็นแอพพลิเคชั่นที่เป็นไปได้ฉันต้องการมีแบบจำลองที่ฉันสามารถอธิบายคุณสมบัติที่แตกต่างของภาษาการเขียนโปรแกรมที่จำเป็น ฉันสามารถหาเอกสารเกี่ยวกับการสร้างแบบจำลองวัตถุในทฤษฎีประเภทพึ่งพาซึ่งก็คือ: การเขียนโปรแกรมเชิงวัตถุในทฤษฎีชนิดพึ่งพาโดย A. Setzer (2006) มีการอ้างอิงเพิ่มเติมในหัวข้อที่ฉันพลาดไปหรืออาจจะมีการอ้างอิงล่าสุดหรือไม่ อาจมีการดำเนินการ (เช่นหลักฐาน) สำหรับนักทฤษฎีบทเช่น Coq หรือ Agda หรือไม่?

3
สิ่งที่ควรเป็นข้อพิสูจน์ความถูกต้องของเครื่องพิมพ์ดีดควรจะพิสูจน์ได้อย่างไร?
ฉันเขียนโปรแกรมมาหลายปีแล้ว แต่ไม่คุ้นเคยกับทฤษฎี CS มาก ฉันเพิ่งพยายามศึกษาภาษาการเขียนโปรแกรมและเป็นส่วนหนึ่งของการตรวจสอบประเภทและการอนุมาน คำถามของฉันคือถ้าฉันพยายามเขียนอนุมานประเภทและตรวจสอบโปรแกรมสำหรับภาษาการเขียนโปรแกรมและฉันต้องการพิสูจน์ว่าตัวพิมพ์ดีดทำงานได้หลักฐานที่ฉันต้องการคืออะไร ในภาษาธรรมดาฉันต้องการให้ตัวตรวจสอบชนิดของฉันสามารถระบุข้อผิดพลาดในส่วนของรหัสที่อาจเกิดขึ้นขณะใช้งานจริง หากฉันต้องใช้บางอย่างเช่น Coq เพื่อลองพิสูจน์ว่าการใช้งานของฉันนั้นถูกต้อง "การพิสูจน์ความถูกต้อง" นี้จะพยายามแสดงอะไร?

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.