baz_num_elts सॉफ़्टवेयर फ़ाउंडेशन से व्यायाम


9

मैं सॉफ्टवेयर फाउंडेशन में निम्नलिखित अभ्यास में हूँ :

(** **** 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 -> bazyप्रकार है baz -> bool -> baz। प्रकार का मान प्राप्त करने के लिए bazहमें या bazतो प्रकार का मान पास करना होगा xया y। हम bazपहले से ही प्रकार के मूल्य के बिना प्रकार का मूल्य नहीं प्राप्त कर सकते हैं baz

अब तक मैं मूल्यों की व्याख्या करने के लिए तत्वों की व्याख्या करता रहा हूं । तो और दोनों प्रकार के तत्व होंगे और प्रकार के तत्वों की एक अनंत संख्या होगी । प्रकार के दो तत्व होंगे , जो हैं और । इस व्याख्या के तहत, मैं तर्क देता हूं कि शून्य प्रकार के तत्व हैं ।(cons nat 1 nil)(cons nat 1 (cons nat 2 nil))list natlist natbooltruefalsebaz

क्या मैं सही हूं, या कोई समझा सकता है कि मुझे क्या गलतफहमी है?


1
ज़रूर। मैंने एक अनुच्छेद जोड़ा है जिसमें बताया गया है कि मुझे क्यों लगता है कि प्रकार का मूल्य बनाना असंभव है baz
२३:०२

अच्छा लगा। यही मैंने सोचा था कि आप सोच रहे थे। शुक्रिया, ट्वर्नमिल्ट। इसके लायक क्या है, मेरी वही प्रतिक्रिया है जो आप करते हैं: मुझे भी इस उत्तर की उम्मीद होगी कि शून्य प्रकार के तत्व हैं baz
डीडब्ल्यू

जवाबों:


8

मैं आपसे सहमत हुँ। के बीच bazऔर एक आक्षेप है False

Definition injective : forall {t1 t2}, (t1 -> t2) -> Prop := fun t1 t2 f1 => forall x1 x2, f1 x1 = f1 x2 -> x1 = x2.

Definition surjective : forall {t1 t2}, (t1 -> t2) -> Prop := fun t1 t2 f1 => forall x1, exists x2, f1 x2 = x1.

Definition bijective : forall {t1 t2}, (t1 -> t2) -> Prop := fun t1 t2 f1 => injective f1 /\ surjective f1.

Inductive baz : Type :=
   | x : baz -> baz
   | y : baz -> bool -> baz.

Theorem baz_False : baz -> False. Proof. induction 1; firstorder. Qed.

Goal exists f1 : baz -> False, bijective f1.
Proof.
exists baz_False. unfold bijective, injective, surjective. firstorder.
assert (H2 := baz_False x1). firstorder.
assert (H2 := x1). firstorder.
Qed.
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.