ฉันกำลังฝึกหัดต่อไปนี้ในมูลนิธิซอฟต์แวร์ :
(** **** Exercise: 2 stars (baz_num_elts) *)
(** Consider the following inductive definition: *)
Inductive baz : Type :=
| x : baz -> baz
| y : baz -> bool -> baz.
(** How _many_ elements does the type [baz] have?
(* FILL IN HERE *)
[] *)
คำตอบทั้งหมดที่ฉันเห็นบนอินเทอร์เน็ตบอกว่าคำตอบคือ 2 และองค์ประกอบคือ x และ y หากเป็นเช่นนั้นก็ไม่ชัดเจนสำหรับฉันความหมายขององค์ประกอบคืออะไร มีคอนสตรัคเตอร์สองตัว แต่เป็นไปไม่ได้ที่จะสร้างมูลค่าของประเภทบาซ
มันเป็นไปไม่ได้ที่จะสร้างค่าของชนิดbazเพราะมีประเภทx มีประเภท เพื่อที่จะได้รับค่าของชนิดที่เราต้องส่งค่าจากประเภทนี้อย่างใดอย่างหนึ่งหรือ เราไม่สามารถรับค่าประเภทโดยที่ไม่มีค่าประเภทแล้วbaz -> bazybaz -> bool -> bazbazbazxybazbaz
จนถึงขณะนี้ผมได้รับการแปลความหมายขององค์ประกอบที่จะเฉลี่ยค่า ดังนั้น(cons nat 1 nil)และ(cons nat 1 (cons nat 2 nil))ทั้งสองจะเป็นองค์ประกอบของประเภทและจะมีจำนวนอนันต์ขององค์ประกอบของประเภทlist nat list natจะมีสององค์ประกอบของประเภทboolซึ่งเป็นและtrue ภายใต้การตีความนี้ผมจะเถียงว่ามีศูนย์องค์ประกอบของประเภทfalsebaz
ฉันถูกต้องหรือมีคนอธิบายสิ่งที่ฉันเข้าใจผิดได้ไหม?
bazฉันก็คาดว่าจะมีคำตอบที่เป็นไปได้ว่ามีศูนย์องค์ประกอบของประเภท
bazฉันได้เพิ่มวรรคอธิบายเหตุผลที่ผมคิดว่ามันเป็นไปไม่ได้ที่จะสร้างค่าของชนิด