필자는 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"는이 유형의 "Z"를 것으로 예상되는 동안 "INT"를 입력있다.
(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의 t (Int.repr (기간 1의 I))" 유형이 "Prop"인 것으로 예상되는 동안 유형은 "bool"입니다.
이 두 'int'형식을 비교하거나 다른 형식으로 변환하고 '소품'유형을 반환 할 수있는 방법이 있습니까?
감사합니다,
감사합니다. Arthur! 당신이 제안했듯이, 나는 강요를 선언했고 그것은 나의 문제를 해결했다. :) –
Arthur의 훌륭한 대답 외에도'is_true '로 증명하는 것이 재 작성으로 증명 스타일을 이끌어 냈다는 점을 지적하고 싶습니다. 실제로'A = true'를'true = true'로 다시 쓸 수 있습니다. – ejgallego