Coq 有关于有理数不等式的问题吗
我试图证明,如果y,一个有理数,大于零,那么y不等于零。我已经确定了两个我认为很有用的定理,特别是,Coq 有关于有理数不等式的问题吗,coq,Coq,我试图证明,如果y,一个有理数,大于零,那么y不等于零。我已经确定了两个我认为很有用的定理,特别是,Qlt\u not\u eq和QOrder.neq\u sym,但是我很难弄清楚如何使用QOrder.neq\u sym定理。似乎我不能用“检查”策略来传递它。例如,当我尝试执行以下操作时: Check (QOrder.neq_sym y 0) 这给了我一个错误,我不知道为什么 Require Import QArith. Require Import QOrderedType. Theore
Qlt\u not\u eq
和QOrder.neq\u sym
,但是我很难弄清楚如何使用QOrder.neq\u 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定理的指导,或者其他关于如何在这个证明上取得进展的建议,我将不胜感激。这对您来说不是很有用,但另一个选择是使用数学组件库;在这种情况下,定理是为抽象代数结构而提出的,其中有理数确实是一个例子 有许多定理说明了在这种情况下需要什么,包括直接定理:
lt0r_neq0 (R : numDomainType) (x : R), 0 < x -> x != 0
检查(@QOrder.neq_sym y 0)。
工作正常吗?(假设:隐式参数)确实需要证据。我验证了我能够进行检查(@QOrder.neq_sym y 0)
,但我仍然无法在重写策略中使用它。你能解释一下你说它需要证据是什么意思吗?你可以使用关于QOrder.neq_-sym
了解更多关于QOrder.neq_-sym的信息。使用该命令,您可以看到x
和y
是隐式参数,也就是说,它们应该不是由用户给出的,而是从剩余参数推断出来的,~0==y
。要使用这个引理,应用它,而不是试图重写它(参见@ejgallego的答案);在Hy中应用Qlt_not_eq;应用Hy,Qeq_sym,C。
Theorem test (y : Q) : y > 0 -> ~ y == 0.
Proof. now intros y_gt0; apply QOrder.neq_sym, Qlt_not_eq. Qed.