निम्नलिखित टाइपचेक क्यों नहीं होगा:

minusReduces : (n : Nat) -> n `minus` Z = n
minusReduces n = Refl

फिर भी यह ठीक टाइपचेक करेगा:

plusReduces : (n : Nat) -> Z `plus` n = n
plusReduces n = Refl
4
Yang Bo 26 जून 2017, 10:12

1 उत्तर

सबसे बढ़िया उत्तर

minus n कम नहीं करता क्योंकि minus परिभाषित पहले तर्क पर पैटर्न मिलान के साथ:

total minus : Nat -> Nat -> Nat
minus Z        right     = Z
minus left     Z         = left
minus (S left) (S right) = minus left right

तो आपको अपने Z और S n मामलों को भी विभाजित करना होगा:

minusReduces : (n : Nat) -> n `minus` Z = n
minusReduces Z = Refl
minusReduces (S k) = Refl
6
Cactus 26 जून 2017, 11:18
यह काम करता हैं। हालांकि मैं अभी भी भ्रमित हूं। एक minus left Z = left खंड है, मैं नहीं देख सकता कि यह पहले तर्क पर कैसे विभाजित है।
 – 
Yang Bo
26 जून 2017, 12:01
3
हां, लेकिन वहां पहुंचने के लिए आपको पहले minus Z right मामले से गुजरना होगा! याद रखें मामलों का आदेश दिया जाता है।
 – 
Cactus
26 जून 2017, 12:12
1
दिलचस्प। व्यवहार आकारहीन/स्कैला में निहित संकल्प नियमों से अलग है।
 – 
Yang Bo
27 जून 2017, 06:09