Загадка индукции в Coq

Для определения и следующей теоремы

Inductive le : nat -> nat -> Prop :=
  | le_n (n : nat)                : le n n
  | le_S (n m : nat) (H : le n m) : le n (S m).

Theorem Sn_le_Sm__n_le_m2 : forall n m,
  S n <= S m -> n <= m.
Proof.
intros. remember (S n). remember (S m). induction H.
- subst. apply S_injective in Heqn1. subst. constructor.
- PROBELEM STATE

Когда мы переходим в состояние проблемы, локальный контекст, показанный в CoqIDE, является

n, m, n0 : nat
Heqn0 : n0 = S n
m0 : nat
Heqn1 : S m0 = S m
H : n0 <= m0
IHle : m0 = S m -> n <= m

Я не могу понять, почему мы получаем IHle : m0 = S m -> n <= m. Насколько я понимаю, поскольку исходная цель - forall n m, S n <= S m -> n <= m, гипотеза индукции должна быть S n <= S m0 -> n <= m0.

Я был бы очень благодарен, если бы вы могли сказать мне, почему гипотеза индукции не соответствует моему мнению.


person Zhang Liao    schedule 17.02.2021    source источник
comment
Я бы посоветовал посмотреть stackoverflow.com/questions/66070219/   -  person Théo Winterhalter    schedule 17.02.2021
comment
Отвечает ли это на ваш вопрос? Можно ли доказать` forall n: nat, le n 0 - ›n = 0` в Coq без использования инверсии?   -  person tabdiukov    schedule 18.02.2021