Есть ли в Coq способ доказать оператор для целых чисел и оператор перевода полуавтоматическим способом в натуральные числа?
В качестве конкретного примера возьмите следующую лемму:
Lemma cancellation:
forall a b c: nat, a > 0 -> a * b = a * c -> b = c.
На самом деле утверждение верно для Z. В этом случае легче доказать, потому что можно использовать вычитание, чтобы получить a * (b - c) = 0
, а затем упростить a
.Но вычитание для натуралов ограничено, поэтому это не сработает.
Предположим, я могу доказать это для целых чисел.Есть ли какая-то тактика, которую можно использовать, чтобы получить утверждение и для натуралов?