Я пытаюсь доказать следующую простую теорему над натуральными числами:
((i + j) = (i + k)) -> (j = k)
Вот что у меня есть в Coq
:
Theorem cancel : forall (i j k : nat),
((add i j) = (add i k)) -> (j = k).
Proof.
intros i j k.
induction i.
simpl.
apply A_IMPLIES_A.
simpl.
И после этого у меня есть подцель:
S (add i j) = S (add i k) -> j = k
Так что я решил применить eq_add_S
, в котором говорится, что S m = S n -> m = n
.
Однако, когда я пытаюсь сделать это с apply eq_add_S
, я получаю следующую ошибку:
Error:
In environment
i, j, k : nat
IHi : add i j = add i k -> j = k
Unable to unify "k" with "add i k".
Так что я не могу понять, что я хочу это m = (add i j)
и n = (add i k)
. Почему Coq
не может читать мои мысли? или более серьезно, как я могу помочь ему сделать это? спасибо!