ฉันสามารถมี "ประเภท coproduct ที่พึ่งพา"


14

ฉันกำลังอ่านหนังสือ HoTTและฉันมีคำถาม (อาจไร้เดียงสามาก) เกี่ยวกับเนื้อหาในบทที่หนึ่ง

แนะนำบทประเภทฟังก์ชั่น แล้วเอามันโดยการทำBขึ้นอยู่กับx : B : → U ,

f:A→B
Bx:A และที่เรียกว่าประเภทฟังก์ชั่นขึ้นอยู่กับ
B:A→U,g:∏x:AB(x)

ย้ายบทที่แล้วแนะนำประเภทของผลิตภัณฑ์ แล้วเอามันโดยการทำBขึ้นอยู่กับx : B : → U ,

f:A×B
Bx:A และที่เรียกว่าประเภทคู่ขึ้น
B:A→U,g:∑x:AB(x)

ฉันเห็นรูปแบบที่นี่แน่นอน

บทต่อไปจะแนะนำประเภท coproduct และ ... combobreaker ... ไม่มีการพูดถึงรุ่นที่ขึ้นต่อกันของประเภทนี้

f:A+B

มีข้อ จำกัด พื้นฐานบางประการหรือไม่เกี่ยวข้องกับหัวข้อของหนังสือเล่มนี้หรือไม่? ในกรณีใด ๆ บางคนสามารถช่วยฉันด้วยสัญชาตญาณว่าทำไมฟังก์ชั่นและประเภทผลิตภัณฑ์? อะไรที่ทำให้ทั้งสองมีความพิเศษเพื่อที่พวกเขาจะได้รับการวางนัยให้เป็นประเภทที่ขึ้นต่อกันแล้วใช้ในการสร้างทุกอย่างขึ้นมา?

คำตอบ:


18

A×B A+BA×B

ABP:bool→UP(false)=AP(true)=B∑b:boolP(b)A+BA×B∏b:boolP(b)

∑∏∃∀∃∀∑∏


∑∏

A

1

ฉันจะพูดเกี่ยวกับวิศวกรรมซอฟต์แวร์มากกว่านี้

คุณกำลังพูดถึงประเภท coproduct ซึ่งconstructorsหลังสามารถอ้างถึงก่อนหน้า (ซึ่งดูคล้ายกับผลิตภัณฑ์ที่มีฟิลด์หลังสามารถอ้างถึงก่อนหน้า)? สิ่งนี้เป็นไปได้ใน Agda หลังจากเปิดตัว HIT (ในรุ่น 2.6.0):

-- Auxiliary definition: Nat
data Nat : Set where
  zero : Nat
  succ : Nat -> Nat

-- The HIT I was talking about
data Int : Set where
  positive : Nat -> Int
  negative : Nat -> Int
  -- Note this constructor uses `positive` and `negative`.
  zeroPath : positive zero ≡ negative zero

โดยต่อไปนี้บทความนี้ถ้าคำจำกัดความของการตรวจสอบชนิดของคุณตรวจสอบการกำหนดโดยใช้ไวยากรณ์ที่นำเสนอในรูป "(26)" ผมเชื่อว่ามันค่อนข้างง่ายที่จะสนับสนุน "coproducts ขึ้น"

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