为什么展开不适用于Coq中的lt(小于)?

时间:2015-07-21 01:39:29

标签: coq

我想证明lt n m -> le n m,因为它在Coq的标准库中不存在。

虽然在Coq.Init.Peano lt m n中,S m <= n被定义为unfold lt,但在假设中​​我无法inversion使用此类定义。

为什么展开不起作用?似乎只有{{1}}才有效。

2 个答案:

答案 0 :(得分:1)

我不知道您正在使用的Coq版本,但在我的unfold lt in h.上工作得很好:如果我在<{p>}中1 subgoal n : nat m : nat h : n < m ______________________________________(1/1) n <= m

1 subgoal
n : nat
m : nat
h : S n <= m
______________________________________(1/1)
n <= m

我得到以下目标:

Nat.lt_le_incl

顺便说一下,你要找的引理是public IReport(String filename, HashMap parameter) { super("Report Viewer"); setIcon(); try { DefaultJasperReportsContext context = DefaultJasperReportsContext.getInstance(); JRPropertiesUtil.getInstance(context).setProperty("net.sf.jasperreports.xpath.executer.factory", "net.sf.jasperreports.engine.util.xml.JaxenXPathExecuterFactory"); JasperPrint print = JasperFillManager.fillReport(filename, parameter, DatabaseService.getConnection()); JasperPrintManager.printReport(print,false); } catch (Exception ex) { ex.printStackTrace(); } this.setExtendedState(MAXIMIZED_BOTH); this.setDefaultCloseOperation(DISPOSE_ON_CLOSE); }

答案 1 :(得分:0)

使用Coq 8.5pl3,它展开得很好:

Require Import Coq.Init.Peano.

Goal forall m n, lt n m -> le n m.
Proof.
  intros m n H.
  unfold lt in H.
  apply le_S_n, le_S, H.
Qed.

你可能使用不同的'lt'定义。您可以按如下方式检查您使用的是哪个:

Coq < About lt.
lt : nat -> nat -> Prop

Argument scopes are [nat_scope nat_scope]
lt is transparent
Expands to: Constant Coq.Init.Peano.lt