COQ: Как использовать «<=" для Z и R в одной и той же лемме?

#coq

#coq

Вопрос:

Предположим, я уже определил floor (от R до Z ). Теперь я хочу доказать, что n <= x это подразумевает n <= floor(x) , где n : Z , x : R .

Я пытался:

 Lemma l: forall (n:Z) (x:R), (IZR n) <= x -> n <= (floor x).
 

но я получаю сообщение об ошибке The term n has type Z while it is expected to have type R.

Как я должен это написать? Есть ли способ, который я могу использовать <= для Z и R одновременно?

Ответ №1:

Чтобы переопределить интерпретацию обозначения по умолчанию, вы можете открыть область обозначения локально, используя %key :

 Lemma l : forall n x, (IZR n <= x)%R -> (n <= floor x)%Z.