我正在通過Terry Tao的真實分析教科書,它從自然數中構建了基礎數學。通過儘可能多的證明形式,我希望熟悉Idris和依賴類型。在伊德里斯與改寫策略苦苦掙扎
我已經定義了以下數據類型:
data GE: Nat -> Nat -> Type where
Ge : (n: Nat) -> (m: Nat) -> GE n (n + m)
代表主張一個自然數大於或等於另一個。
我目前正在努力證明這種關係的反思,即構建以證明簽名
geRefl : GE n n
我第一次嘗試是簡單地嘗試geRefl {n} = Ge n Z
,但是這類型Ge n (add n Z)
。爲了得到這個與所需的簽名相結合,我們顯然必須進行某些改寫,大概涉及到引理
plusZeroRightNeutral : (left : Nat) -> left + fromInteger 0 = left
我最好的嘗試是:
geRefl : GE n n
geRefl {n} = x
where x : GE n (n + Z)
x = rewrite plusZeroRightNeutral n in Ge n Z
但這並不進行類型檢查。
您能否給出這個定理的正確證明,並解釋其背後的原因?
它會更容易使它'GE:(m:Nat) - >(n : Nat) - > GE n(m + n)'代替。然後'geRefl = GE Z'。 – RhubarbAndC
@RhubarbAndC我考慮過這個,但它讓其他事情變得更加困難。 – user1502040