我试图证明agda的交换属性。我试图探索标准库,但有很多复杂的东西我无法理解。 我试过这种方式 -
comm : (a b : Q) -> (a + b) === (b + a)
这里的问题是+没有在库中用Q定义。我们不能在没有定义+ over Q的情况下证明这一点。 请指导我。
答案 0 :(得分:1)
如果没有先定义 + ,就无法证明这一点。
如果你在探索标准库时感到困惑,我建议你先尝试更容易地证明一些事情,以便在解决这个问题之前更加熟悉Agda。
答案 1 :(得分:0)
当然,你无法证明未定义函数_+_
的交换性;作为一个愚蠢的反例,你希望能够证明(a - b) == (b - a)
吗?如果没有,为什么不呢?此时_-_
与_+_
一样具有未定义的功能;它只是有一个不同的名字......
请注意,您可以使用小学数学定义ℚ
的附加内容:
n ÷ p + m ÷ q = (n * q + m * p) ÷ (p * q)
通过将n * q + m * p
和p * q
与GCD分开来简化它。我已在this answer中解释了最后一步的细节。