में एकरमेन को परिभाषित करने में त्रुटि मैं कोक में एकरमेन-पीटर्स फ़ंक्शन को परिभाषित करने की कोशिश कर रहा हूं, और मुझे एक त्रुटि संदेश मिल रहा है जिसे मैं समझ नहीं पा रहा हूं। जैसा कि आप देख सकते हैं, मैं एक जोड़ी ab
में एकरमेन के a, b
तर्कों को पैकेजिंग कर रहा हूं; मैं तर्कों के लिए ऑर्डरिंग फ़ंक्शन को परिभाषित करने का आदेश प्रदान करता हूं। फिर मैं Function
रूप का उपयोग एकरमेन को स्वयं परिभाषित करने के लिए करता हूं, इसे ab
तर्क के लिए ऑर्डरिंग फ़ंक्शन प्रदान करता है।कोक
Error: No such section variable or assumption:
ack
.
मुझे यकीन है कि क्या Coq परेशान है, लेकिन इंटरनेट खोज, मैंने पाया एक सुझाव वहाँ एक पुनरावर्ती का उपयोग कर के साथ एक समस्या हो सकती है नहीं कर रहा हूँ:
Require Import Recdef.
Definition ack_ordering (ab1 ab2 : nat * nat) :=
match (ab1, ab2) with
|((a1, b1), (a2, b2)) =>
(a1 > a2) \/ ((a1 = a2) /\ (b1 > b2))
end.
Function ack (ab : nat * nat) {wf ack_ordering} : nat :=
match ab with
| (0, b) => b + 1
| (a, 0) => ack (a-1, 1)
| (a, b) => ack (a-1, ack (a, b-1))
end.
क्या मैं निम्न त्रुटि संदेश है फ़ंक्शन को ऑर्डरिंग या माप के साथ परिभाषित किया गया है, जहां रिकर्सिव कॉल एक मैच के भीतर होता है। हालांकि, अनुमानों का उपयोग fst
और snd
और if-then-else
ने एक अलग त्रुटि संदेश उत्पन्न किया। क्या कोई सुझाव दे सकता है कि कोक में एकरमेन को कैसे परिभाषित किया जाए?
आज मैं एक ही समस्या में भाग गया। क्या आपको एक समाधान मिला? –
@ अभिषेकअनंद यह थोड़ी देर हो गया है ... मैंने नीचे 'प्रोग्राम फिक्सपॉइंट' के साथ एक समाधान प्रदान किया है। क्या आपको 'फंक्शन' के साथ समाधान मिला? –
नहीं, मैंने नहीं किया। आपके उत्तर के लिए धन्यवाद। –