【问题标题】:Complex quantifiers in Idris?Idris 中的复杂量词?
【发布时间】:2021-03-17 15:29:34
【问题描述】:

现在我知道了,可以通过依赖类型来表达量词。所以我为此写了一个简单的实现“for all (a, b: N): exists (c: N): c = a + b”:

f : (a : Nat) -> (b : Nat) -> (c : Nat ** c = a + b)
f a b = (a + b ** Refl)

它有效。

现在我想知道,我可以表达这个“for all (a, b: N): exists (c: N): c > a and c

【问题讨论】:

    标签: math types idris dependent-type quantifiers


    【解决方案1】:

    对于Nat 比较,您可以使用Data.Nat's GT(大于)、GTE(大于)、LT(小于)、LTE(小于)。所以GT c aLT c b 对应c > ac < b

    对于and,您可以将两个证明放入一个元组:(GT c a, LT c b)。例如,如果您想or 他们,您可以使用Either (GT c a) (LT c b)

    因此:

    import Data.Nat
    
    f : (a, b : Nat) -> (c : Nat ** (GT c a, LT c b))
    

    (然而,这个确切的例子是行不通的,因为你不能定义f,因为没有c所以c > 5 and c < 5。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-20
      • 2022-12-16
      • 2020-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-17
      • 2014-01-03
      相关资源
      最近更新 更多