Работа с несколькими целочисленными библиотеками в Coq? - PullRequest
0 голосов
/ 26 июня 2018

Я часто получаю проверочные термины в виде:

Lemma of_nat_gt_0: forall (n: nat),
(Z.of_nat n >=? Int32.unsigned (Int32.repr 0)) = true.

Теорема очевидно верна (Z натурального всегда будет >= 0. Аналогично, unsigned repr 0 даст 0.

Однако, они просто прямо раздражают , потому что мне нужно иметь дело с

  1. Int32 из модуля CompCert.Integers
  2. Z.of_nat конверсий.

Часто у меня также есть термины из Pos и N определений.

Эти доказательства включают в себя несколько ручных переписываний, чтобы жонглировать в некоторую стандартную форму, а затем omega вызов.

Есть ли какой-нибудь способ "нормализовать" все это в единое унифицированное представление?

Я понимаю, что это подразумевает передачу между разными кольцами (например, Int32 - это Z/(2^32 - 1)). Было бы неплохо, если бы был какой-то способ справиться с этим, потому что это доказательства, которые становятся раздражающе длинными.

...