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


14

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

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

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

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

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

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

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

f:A+B

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

คำตอบ:


18

A×B A+BA×B

ABP:boolUP(false)=AP(true)=Bb:boolP(b)A+BA×Bb: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.