【发布时间】:2014-06-23 08:57:53
【问题描述】:
Agda 标准库包含一些模块Relation.Binary.*.(Non)StrictLex(目前仅适用于Product 和List)。我们可以使用这些模块轻松地构造一个实例,例如,IsStrictTotalOrder 用于自然数对(即ℕ × ℕ)。
open import Data.Nat as ℕ using (ℕ; _<_)
open import Data.Nat.Properties as ℕ
open import Relation.Binary using (module StrictTotalOrder; IsStrictTotalOrder)
open import Relation.Binary.PropositionalEquality using (_≡_)
open import Relation.Binary.Product.StrictLex using (×-Lex; _×-isStrictTotalOrder_)
open import Relation.Binary.Product.Pointwise using (_×-Rel_)
ℕ-isSTO : IsStrictTotalOrder _≡_ _<_
ℕ-isSTO = StrictTotalOrder.isStrictTotalOrder ℕ.strictTotalOrder
ℕ×ℕ-isSTO : IsStrictTotalOrder (_≡_ ×-Rel _≡_) (×-Lex _≡_ _<_ _<_)
ℕ×ℕ-isSTO = ℕ-isSTO ×-isStrictTotalOrder ℕ-isSTO
这将使用逐点相等_≡_ ×-Rel _≡_ 创建一个实例。在命题相等的情况下,这应该等同于使用 just 命题相等。
有没有一种简单的方法可以将上面的实例转换为IsStrictTotalOrder _≡_ (×-Lex _≡_ _<_ _<_) 类型的实例,使用正常的命题相等?
【问题讨论】:
标签: standard-library agda