我试图证明a,如果y(有理数)大于零,则y不等于零。我已经确定了两个我认为有用的定理,特别是Qlt_not_eq
和QOrder.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
定理的任何指导,或者在如何证明我可能会忽略的证据方面取得任何其他建议,我将不胜感激。
答案 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.