我在Coq的规范文件中有以下定义。我需要有一个比较两个“int”类型值的命题。这两个是't'和'Int.repr(i。(period1))'。(i.period1)和(i.period2)的类型为'Z'。如何在Coq中比较两个'int'类型的命题?
这是我的代码片段:
Definition trans_uni_r_reject (i: invariant) (om os: block) (rid roff rval t: int) (m: mem) :=
(t > (Int.repr (i.(period1)))
/\ t < (Int.repr (i.(period2)))
/\ master_eval_reject i om os rid roff rval m).
这给了我下面的错误:
术语“T”的类型为“INT”,而它预计有型“Z”。
我也试过:
(Int.cmpu Cgt t (Int.repr (i.(period1))))
/\ (Int.cmpu Clt t (Int.repr (i.(period2))))
/\ (master_eval_reject i om os rid roff rval m).
,但它给了我这个错误:
术语 “Int.cmpu CGT吨(Int.repr(间隔1 I))”有类型“布尔”,而它预计有类型“支柱”。
有没有什么办法可以比较这两个'int'类型或将它们转换为其他类型并返回'prop'类型?
谢谢,
感谢亚瑟!正如你所建议的那样,我宣布了一种强制,它解决了我的问题。 :) –
除了亚瑟的出色答卷,我想指出的是,以证明'is_true'导致与重写证明的风格,事实上你可以重写'A = TRUE'为'真= TRUE'。 – ejgallego