上Inductive Data Types and Pattern Matching狀態阿格達手冊: 爲了確保規範化,感性的發生必須出現在嚴格正位置。例如,下面的數據類型是不允許的: data Bad : Set where
bad : (Bad → Bad) → Bad
因爲有壞的參數來構造一個負的發生。 爲什麼這個要求對於歸納數據類型是必需的?
我有下定義: data Nat : Set where
zero : Nat
succ : Nat -> Nat
prev : Nat -> Nat
prev zero = zero
prev (succ n) = n
data _<=_ : Nat -> Nat -> Set where
z<=n : forall {n} -> zero <= n
我想證明一些使用可判決平等的函數的一些簡單事情。這裏是一個大大簡化例如: open import Relation.Nullary
open import Relation.Binary
open import Relation.Binary.PropositionalEquality
module Foo {c} {ℓ} (ds : DecSetoid c ℓ) where
open
只需要注意,這是一個任務,所以可能最好不要發佈完整的解決方案,相反,我只是卡住了,需要一些提示,我應該看看接下來的內容。 module BST where
open import Data.Nat
open import Relation.Binary.PropositionalEquality
open import Relation.Binary
open DecTotalOrder
這是問題的擴展張貼在這裏: Agda and Binary Search Trees 我有 trans₁ : ∀ {a b c} → suc a ≤ suc b → suc b ≤ c → suc a ≤ c
用於trans₁定義,但這需要我將下面的加寬的定義更改爲: widen : ∀{min max newMin newMax}
→ BST min max
→ su
首先是一些無聊的進口: import Relation.Binary.PropositionalEquality as PE
import Relation.Binary.HeterogeneousEquality as HE
import Algebra
import Data.Nat
import Data.Nat.Properties
open PE
open HE using