遇到有理数不等式的问题

时间:2018-11-12 01:27:36

标签: coq

我试图证明a,如果y(有理数)大于零,则y不等于零。我已经确定了两个我认为有用的定理,特别是Qlt_not_eqQOrder.neq_sym,但是我在弄清楚如何使用QOrder.neq_sym定理时遇到了麻烦。看来我无法通过“检查”策略传递参数。例如,当我尝试这样做时:

Check (QOrder.neq_sym y 0)

这给了我一个错误,我不确定为什么。

Require Import QArith.
Require Import QOrderedType.

Theorem test : forall (x y : Q),
    y > 0 -> ~ y == 0.
Proof.
    intros.
    (* This works OK *)
    Check QOrder.neq_sym.  
    (* But this gives me an error *)
    Check (QOrder.neq_sym y 0).

对于使用QOrder.neq_sym定理的任何指导,或者在如何证明我可能会忽略的证据方面取得任何其他建议,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

它对您不是很有用,但是另一种方法是使用数学组件库;在这种情况下,针对抽象代数结构提出了定理,其中有理数确实是一个实例。

在这种情况下,您有许多定理说明您想要什么,包括直接定理:

lt0r_neq0 (R : numDomainType) (x : R), 0 < x -> x != 0

您的原始目标可以通过以下方式证明:

Theorem test (y : Q) : y > 0 -> ~ y == 0.
Proof. now intros y_gt0; apply QOrder.neq_sym, Qlt_not_eq. Qed.