ไม่ในกรณีนี้ predicativity และ monotonicity ไม่เกี่ยวข้องกัน
การตรวจสอบเชิงบวกใน Coq / Adga ทำหน้าที่ตรวจสอบให้แน่ใจว่าคุณได้รับจุดคงที่ที่น้อยที่สุดของสิ่งที่เป็นแบบโมโนโพนิคโดยประมาณ
ต่อไปนี้เป็นวิธีคิดประเภทอุปนัยในแง่ของโปรยและผู้ประกอบการโมโนโทน จำได้ว่า Knaster-Tarski ทฤษฎีบทบอกว่าบนตาข่ายสมบูรณ์ , ทุกเครือเดียวF : L → Lมีจุดน้อยคงμ ( ฉ ) ต่อไปเราสามารถนึกถึงประเภทในทฤษฎีประเภทเป็นการสร้างขัดแตะภายใต้การพิสูจน์ได้ นั่นคือพิมพ์Sอยู่ด้านล่างTถ้าความจริงของSรายละเอียดของT ตอนนี้สิ่งที่เราต้องการจะทำคือการใช้ตัวดำเนินการแบบโมโนโทนLf:L→Lμ(f)STSTในประเภทและใช้ Knaster-Tarski เพื่อตีความการแก้ไขจุดที่น้อยที่สุดของตัวดำเนินการนี้F ) μ(F)
อย่างไรก็ตามประเภทในทฤษฎีประเภทไม่ได้เป็นเพียงโครงร่าง: มันเป็นหมวดหมู่ นั่นคือให้ทั้งสองประเภทและT , อาจมีการหลายวิธีสำหรับSจะต่ำกว่าTด้วยวิธีหนึ่งสำหรับการพิสูจน์แต่ละอีเมล์: S → T ดังนั้นผู้ประกอบการประเภทFก็ต้องทำอะไรบางอย่างที่เหมาะสมกับบทพิสูจน์เหล่านี้ ทั่วไปที่เหมาะสมของ monotonicity เป็นfunctoriality นั่นคือเราต้องการให้Fมีโอเปอเรเตอร์ในประเภทและยังมีการดำเนินการเกี่ยวกับการพิสูจน์เช่นถ้าe : S → Tแล้วF (STSTe:S→TFFe:S→T )F(e):F(S)→F(T)
ตอนนี้ functoriality ถูกเก็บรักษาไว้โดยผลรวมและผลิตภัณฑ์ (เช่น. ถ้าและGเป็น endofunctors ตามประเภทแล้วF + GและF × G (ทำหน้าที่เป็นพอยต์) เป็นหน้าที่ในประเภท (สมมติว่าเรามีผลรวมและผลิตภัณฑ์ในพีชคณิตของเรา ประเภท) อย่างไรก็ตามมันไม่ได้ถูกสงวนไว้โดยพื้นที่ฟังก์ชั่นเนื่องจาก bifunctor เลขชี้กำลังF → GFGF+GF×GF→Gนั้นขัดแย้งกับอาร์กิวเมนต์ด้านซ้ายดังนั้นเมื่อคุณเขียนคำนิยามประเภทอุปนัยคุณจะกำหนด functor ให้ใช้จุดคงที่น้อยที่สุด เพื่อให้แน่ใจว่าเป็น functor แน่นอนคุณต้องตัดการเกิดขึ้นของพารามิเตอร์แบบเรียกซ้ำทางด้านซ้ายของช่องว่างของฟังก์ชัน --- ดังนั้นจึงต้องตรวจสอบด้านบวก
โดยทั่วไปมักจะหลีกเลี่ยงการไม่ใส่ใจ (ในแง่ของระบบ F) เพราะเป็นหลักการที่บังคับให้คุณเลือกระหว่างตรรกะแบบคลาสสิกและแบบจำลองเชิงทฤษฎีเซต คุณไม่สามารถตีความประเภทเป็นชุดในทฤษฎีเซตแบบคลาสสิกหากคุณมีการจัดทำดัชนีแบบ F (ดู "ความหลากหลายที่แตกต่างคือทฤษฎีเซต" ของเรย์โนลด์สที่โด่งดัง)
โดยทั่วไปแล้วการแสดงอารมณ์แบบ F บอกว่าหมวดหมู่ของประเภทและเงื่อนไขเป็นหมวดหมู่ที่สมบูรณ์ขนาดเล็ก (นั่นคือ homs และวัตถุมีทั้งชุดและขีด จำกัด ของไดอะแกรมขนาดเล็กทั้งหมด) คลาสสิกสิ่งนี้บังคับให้หมวดหมู่เป็น poset คอนสตรัคติวิสต์หลายคนสร้างสรรค์เพราะพวกเขาต้องการให้ทฤษฎีบทของพวกเขายึดถือมากกว่าระบบกว่าตรรกะเพียงคลาสสิกและเพื่อให้พวกเขาไม่ต้องการที่จะพิสูจน์ได้ว่าอะไรที่จะเป็นเท็จคลาสสิก ดังนั้นพวกเขาจึงมีความหลากหลายของ impredicative polymorphism
อย่างไรก็ตามความแตกต่างทำให้คุณสามารถพูดได้หลายเงื่อนไขว่าคลาสสิก "ใหญ่" ภายในกับทฤษฎีประเภทของคุณ - และ positivity เป็นหนึ่งในนั้น! ตัวดำเนินการชนิดคือ functorial ถ้าคุณสามารถสร้างคำ polymorphic:F
Fmap:∀α,β.(α→β)→(F(α)→F(β))
มาดูกันว่าสิ่งนี้สอดคล้องกับงานศพไหม? IMO นี้จะเป็นตัวเลือกที่ดีมากที่จะมีใน Coq เนื่องจากมันจะช่วยให้คุณทำการเขียนโปรแกรมทั่วไปได้ง่ายขึ้น ลักษณะทางวากยสัมพันธ์ของการตรวจสอบเชิงบวกเป็นอุปสรรคใหญ่ในการเขียนโปรแกรมทั่วไปและฉันยินดีที่จะแลกเปลี่ยนความเป็นไปได้ของสัจพจน์คลาสสิกสำหรับโปรแกรมการทำงานที่ยืดหยุ่นมากขึ้น
แก้ไข: คำถามที่คุณถามเกี่ยวกับความแตกต่างระหว่าง Prop และ Set เกิดขึ้นจากข้อเท็จจริงที่ว่านักพัฒนา Coq ต้องการอนุญาตให้คุณคิดถึงทฤษฎีบท Coq ในเงื่อนไข set-theoretic ที่ไร้เดียงสาถ้าคุณต้องการโดยไม่บังคับคุณทำเช่นนั้น ในทางเทคนิคแล้วพวกเขาแบ่ง Prop และ Set แล้วห้ามไม่ให้เซตขึ้นอยู่กับเนื้อหาการคำนวณของ Prop
ดังนั้นคุณสามารถตีความ Prop เป็นค่าความจริงใน ZFC ซึ่งเป็นบูลีนจริงและเท็จ ในโลกนี้การพิสูจน์ข้อเสนอทั้งหมดมีค่าเท่ากันและแน่นอนว่าคุณไม่ควรแยกหลักฐานการเสนอ ดังนั้นข้อห้ามในเซตขึ้นอยู่กับเนื้อหาการคำนวณของข้อพิสูจน์ของ Prop จึงสมเหตุสมผล นอกจากนี้โครงตาข่ายแบบบูลีนแบบ 2 องค์ประกอบนั้นเห็นได้ชัดว่าเป็นโครงข่ายแบบสมบูรณ์ดังนั้นจึงควรสนับสนุนการจัดทำดัชนีแบบไม่คิดค่าใช้จ่าย ข้อ จำกัด ของ predicativity ในเซตเกิดขึ้นจากข้อเท็จจริง (ดังกล่าวข้างต้น) ว่าการจัดทำดัชนีแบบ F นั้นเสื่อมโทรมในแบบจำลองเซตทฤษฎี
Coq มีโมเดลอื่น ๆ (มันเป็นตรรกะเชิงสร้างสรรค์!) แต่ประเด็นก็คือเมื่อวางหิ้งมันจะไม่พิสูจน์อะไรเลยว่านักคณิตศาสตร์คลาสสิกจะงงงวย