我想证明lt n m -> le n m
,因为它在Coq的标准库中不存在。
虽然在Coq.Init.Peano
lt m n
中,S m <= n
被定义为unfold lt
,但在假设中我无法inversion
使用此类定义。
为什么展开不起作用?似乎只有{{1}}才有效。
答案 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