我如何改变agda中forall的工作?

时间:2015-06-13 10:37:00

标签: agda

我正在使用一对理性流,让我们说(L,R)其中L和R是有理数的流。 L和R都必须满足3个条件才能说它是有效的。我把代码编写为..

isCut_ : cut → Set
isCut x = (p q : pair ) → 
              if((((p mem (getLC x)) ∨ (p mem (getRC x)))) ∧ 
                ((not (p mem getLC x)) ∨ (not (p mem getRC x))) ∧ 
                (not (p <pair q) ∨ ((p mem getLC x) ∨ (q mem getRC x))))then ⊤
              else ⊥

我真的想将此函数的返回类型更改为Bool。这里剪切意味着(L,R)和mem是成员资格。

来自forall p q which expect return type to be Set的问题。 我应该如何处理以获得理想的结果。

1 个答案:

答案 0 :(得分:2)

你可以这样写:

isCut : cut → (p q : pair) → Bool
isCut x p q = (((p mem (getLC x)) ∨ (p mem (getRC x))))
            ∧ ((not (p mem getLC x)) ∨ (not (p mem getRC x)))
            ∧ (not (p <pair q) ∨ ((p mem getLC x) ∨ (q mem getRC x))))