是否有任何使用Data.Maybe.Is的非平凡代码?

时间:2015-06-17 06:58:44

标签: agda maybe

Agda标准库提供了数据类型Maybe,并附带了视图Any。 然后使用Is-just定义属性Any。我发现使用此类型很困难,因为标准库完全没有为Any提供工具。

因此,我正在寻找有效使用Is-just的示例。是否有一个使用它的开源项目?

或者,我正在寻求如何充分利用它:

  • 鉴于Is-just mIs-nothing m,如何消除?可以Relation.Nullary.Negation.contradiction在这里使用吗?
  • 鉴于需要p : ... → (mp : Is-just m) → ... → ... ≡ to-witness mp归纳显示的属性p ... = {! p ... (subst Is-just m≡somethingelse mp) ... !},给定的术语不填充漏洞,因为它的类型为... ≡ to-witness (subst Is-just m≡somethingelse mp)

通常使用Σ A (_≡_ m ∘ just)比使用Is-just m更容易。

1 个答案:

答案 0 :(得分:1)

关于您的第一个问题,可能会导致在上下文中同时包含[No relevant source lines]Is-just m的矛盾。然后,您可以使用Is-nothing m来证明任何事情。

⊥-elim

第二个对我来说有点过于抽象,无法确定我所建议的是否会起作用,但通常的策略是尝试对类型module isJust where open import Level open import Data.Empty open import Data.Maybe contradiction : {ℓ : Level} {A : Set ℓ} {m : Maybe A} (j : Is-just m) (n : Is-nothing m) → ⊥ contradiction (just _) (just pr) = pr 的值进行模式匹配,或者对{ {1}}。

至于使用Maybe A的另一个定义,我倾向于喜欢

Is-just m

因为它计算。